{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ML_in_Finance-Deep-Classifiers\n",
    "# Author: Matthew Dixon\n",
    "# Version: 1.0 (24.7.2019)\n",
    "# License: MIT\n",
    "# Email: matthew.dixon@iit.edu\n",
    "# Notes: tested on Mac OS X with Python 3.6.9 and the following packages:\n",
    "# numpy=1.18.1, keras=2.3.1, tensorflow=2.0.0, scikit-learn=0.22.1, matplotlib=3.1.3\n",
    "# Citation: Please cite the following reference if this notebook is used for research purposes:\n",
    "# Dixon M.F., Halperin I. and P. Bilokon, Machine Learning in Finance: From Theory to Practice, Springer Graduate textbook Series, 2020. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from sklearn.datasets import make_moons\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Overview\n",
    "\n",
    "This notebook demonstrates the configuration and properties of feed forward neural networks. We will investigate how the perceptron units transform the input space. Specifically, we shall study the fitted weights and plot the separating hyperplanes, starting with no hidden layers, adding a hidden layer and then two hidden layers. We shall also observe the effect of changing the number of perceptron units in a layer.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# Preliminaries\n",
    "\n",
    "##  Load the standard dataset and other preliminaries"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The half-moons dataset is a classic classification problem consisting of two classes arranged in arcs, overlapping in each of the input space's two dimensions.\n",
    "\n",
    "Note that we shall not partition the data into training and testing sets, since our goal is to understand how adding hidden layers transforms the input space, not to evaluate the models' classification performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, Y = make_moons(n_samples=100, noise=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "colors = np.array(['#377eb8', '#ff7f00'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Function definitions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define the baseline neural network binary classifier without a hidden layer (i.e. a logit model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_logit():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    # Add the only layer, transforming the 2D input to the 1D output\n",
    "    model.add(Dense(1, input_dim=2, kernel_initializer='normal', activation='sigmoid')) \n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This function will display the decision boundary for the model, over the region\n",
    "spanned by its inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_decision_surface(X, model, h):\n",
    "    # Get the upper and lower bounds of the two input dimensions\n",
    "    x_min, x_max = X[:, 0].min(), X[:, 0].max()\n",
    "    y_min, y_max = X[:, 1].min(), X[:, 1].max()\n",
    "    \n",
    "    # Create the mesh over the input space\n",
    "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
    "                         np.arange(y_min, y_max, h))\n",
    "    \n",
    "    # Plot the decision boundary. For that, we will assign a color to each\n",
    "    # point in the mesh [x_min, m_max]x[y_min, y_max].\n",
    "    y_pred = model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "    \n",
    "    # Quantise the model output to the integers 0 & 1\n",
    "    g_pred = np.array(y_pred > 0.5, dtype=np.integer)\n",
    "    \n",
    "    # Plot the inputs and decision boundary on the input space\n",
    "    plt.scatter(xx.ravel(), yy.ravel(), s=10, color=colors[g_pred.ravel()])    \n",
    "    plt.scatter(X[:, 0], X[:, 1], s=30, color=colors[Y], edgecolors='black')\n",
    "    plt.xlabel(r'$X_1$')\n",
    "    plt.ylabel(r'$X_2$')\n",
    "    \n",
    "    return plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fix NumPy and TensorFlow's random seeds for reproducibility"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed = 56\n",
    "np.random.seed(seed)\n",
    "tf.random.set_seed(seed)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 1a: Evaluate the logit model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we use the helper function we defined above to create the model, and fit it to the training data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "100/100 [==============================] - 2s 18ms/step - loss: 0.6808 - accuracy: 0.7400\n",
      "Epoch 2/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6579 - accuracy: 0.7800\n",
      "Epoch 3/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6359 - accuracy: 0.8000\n",
      "Epoch 4/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6154 - accuracy: 0.8100\n",
      "Epoch 5/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5965 - accuracy: 0.8100\n",
      "Epoch 6/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5789 - accuracy: 0.8200\n",
      "Epoch 7/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5625 - accuracy: 0.8200\n",
      "Epoch 8/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5470 - accuracy: 0.8200\n",
      "Epoch 9/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5327 - accuracy: 0.8200\n",
      "Epoch 10/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5195 - accuracy: 0.8200\n",
      "Epoch 11/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5068 - accuracy: 0.8200\n",
      "Epoch 12/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4953 - accuracy: 0.8200: 0s - loss: 0.4354 - ac\n",
      "Epoch 13/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4842 - accuracy: 0.8300\n",
      "Epoch 14/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4741 - accuracy: 0.8300\n",
      "Epoch 15/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4641 - accuracy: 0.8300\n",
      "Epoch 16/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4552 - accuracy: 0.8300\n",
      "Epoch 17/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4467 - accuracy: 0.8300\n",
      "Epoch 18/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4387 - accuracy: 0.8300\n",
      "Epoch 19/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4313 - accuracy: 0.8300\n",
      "Epoch 20/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4241 - accuracy: 0.8300\n",
      "Epoch 21/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4175 - accuracy: 0.8300\n",
      "Epoch 22/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4110 - accuracy: 0.8300\n",
      "Epoch 23/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4053 - accuracy: 0.8300\n",
      "Epoch 24/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3996 - accuracy: 0.8400\n",
      "Epoch 25/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3943 - accuracy: 0.8400\n",
      "Epoch 26/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3893 - accuracy: 0.8400\n",
      "Epoch 27/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3844 - accuracy: 0.8400\n",
      "Epoch 28/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3799 - accuracy: 0.8400\n",
      "Epoch 29/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3756 - accuracy: 0.8400\n",
      "Epoch 30/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3716 - accuracy: 0.8400\n",
      "Epoch 31/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3676 - accuracy: 0.8400\n",
      "Epoch 32/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3639 - accuracy: 0.8400\n",
      "Epoch 33/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3605 - accuracy: 0.8400\n",
      "Epoch 34/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3571 - accuracy: 0.8400\n",
      "Epoch 35/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3539 - accuracy: 0.8400\n",
      "Epoch 36/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3508 - accuracy: 0.8400\n",
      "Epoch 37/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3480 - accuracy: 0.8400\n",
      "Epoch 38/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3451 - accuracy: 0.8400\n",
      "Epoch 39/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3425 - accuracy: 0.8400\n",
      "Epoch 40/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3399 - accuracy: 0.8400\n",
      "Epoch 41/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3375 - accuracy: 0.8400\n",
      "Epoch 42/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3351 - accuracy: 0.8400\n",
      "Epoch 43/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3329 - accuracy: 0.8500\n",
      "Epoch 44/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3308 - accuracy: 0.8500\n",
      "Epoch 45/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3287 - accuracy: 0.8500\n",
      "Epoch 46/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3268 - accuracy: 0.8500\n",
      "Epoch 47/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3248 - accuracy: 0.8500\n",
      "Epoch 48/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3231 - accuracy: 0.8500\n",
      "Epoch 49/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3214 - accuracy: 0.8500\n",
      "Epoch 50/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3196 - accuracy: 0.8500\n",
      "Epoch 51/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3180 - accuracy: 0.8500\n",
      "Epoch 52/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3165 - accuracy: 0.8500\n",
      "Epoch 53/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3151 - accuracy: 0.8500\n",
      "Epoch 54/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3136 - accuracy: 0.8500\n",
      "Epoch 55/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3122 - accuracy: 0.8500\n",
      "Epoch 56/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3108 - accuracy: 0.8500\n",
      "Epoch 57/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3096 - accuracy: 0.8500\n",
      "Epoch 58/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3083 - accuracy: 0.8500\n",
      "Epoch 59/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3072 - accuracy: 0.8500\n",
      "Epoch 60/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3059 - accuracy: 0.8500\n",
      "Epoch 61/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3049 - accuracy: 0.8500\n",
      "Epoch 62/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3037 - accuracy: 0.8500\n",
      "Epoch 63/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3027 - accuracy: 0.8500\n",
      "Epoch 64/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3017 - accuracy: 0.8500\n",
      "Epoch 65/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3007 - accuracy: 0.8500\n",
      "Epoch 66/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2998 - accuracy: 0.8500: 0s - loss: 0.2505 - accuracy: \n",
      "Epoch 67/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2989 - accuracy: 0.8500\n",
      "Epoch 68/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2980 - accuracy: 0.8500\n",
      "Epoch 69/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2971 - accuracy: 0.8500\n",
      "Epoch 70/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2964 - accuracy: 0.8500\n",
      "Epoch 71/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2956 - accuracy: 0.8500\n",
      "Epoch 72/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2949 - accuracy: 0.8500: 0s - loss: 0.2486 - accu\n",
      "Epoch 73/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2939 - accuracy: 0.8500\n",
      "Epoch 74/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2933 - accuracy: 0.8500\n",
      "Epoch 75/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2926 - accuracy: 0.8500\n",
      "Epoch 76/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2918 - accuracy: 0.8500\n",
      "Epoch 77/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2912 - accuracy: 0.8500\n",
      "Epoch 78/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2906 - accuracy: 0.8500\n",
      "Epoch 79/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2900 - accuracy: 0.8500\n",
      "Epoch 80/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2893 - accuracy: 0.8500\n",
      "Epoch 81/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2886 - accuracy: 0.8500\n",
      "Epoch 82/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2882 - accuracy: 0.8600\n",
      "Epoch 83/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2877 - accuracy: 0.8600\n",
      "Epoch 84/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2870 - accuracy: 0.8600\n",
      "Epoch 85/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2864 - accuracy: 0.8700\n",
      "Epoch 86/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2860 - accuracy: 0.8700\n",
      "Epoch 87/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2854 - accuracy: 0.8700\n",
      "Epoch 88/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2849 - accuracy: 0.8700\n",
      "Epoch 89/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2844 - accuracy: 0.8700\n",
      "Epoch 90/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2840 - accuracy: 0.8700\n",
      "Epoch 91/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2837 - accuracy: 0.8700\n",
      "Epoch 92/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2830 - accuracy: 0.8700\n",
      "Epoch 93/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2826 - accuracy: 0.8700\n",
      "Epoch 94/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2823 - accuracy: 0.8700\n",
      "Epoch 95/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2819 - accuracy: 0.8700\n",
      "Epoch 96/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2815 - accuracy: 0.8700\n",
      "Epoch 97/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2811 - accuracy: 0.8700\n",
      "Epoch 98/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2806 - accuracy: 0.8700\n",
      "Epoch 99/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2803 - accuracy: 0.8700\n",
      "Epoch 100/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2802 - accuracy: 0.8700\n",
      "Epoch 101/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2796 - accuracy: 0.8700\n",
      "Epoch 102/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2791 - accuracy: 0.8700\n",
      "Epoch 103/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2791 - accuracy: 0.8700\n",
      "Epoch 104/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2785 - accuracy: 0.8700\n",
      "Epoch 105/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2785 - accuracy: 0.8700\n",
      "Epoch 106/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2779 - accuracy: 0.8700\n",
      "Epoch 107/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2774 - accuracy: 0.8700\n",
      "Epoch 108/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2772 - accuracy: 0.8700\n",
      "Epoch 109/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2769 - accuracy: 0.8700\n",
      "Epoch 110/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2767 - accuracy: 0.8700\n",
      "Epoch 111/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2765 - accuracy: 0.8700\n",
      "Epoch 112/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2760 - accuracy: 0.8700\n",
      "Epoch 113/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2758 - accuracy: 0.8700\n",
      "Epoch 114/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2756 - accuracy: 0.8700\n",
      "Epoch 115/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2753 - accuracy: 0.8700\n",
      "Epoch 116/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2751 - accuracy: 0.8700\n",
      "Epoch 117/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2747 - accuracy: 0.8700\n",
      "Epoch 118/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2746 - accuracy: 0.8700\n",
      "Epoch 119/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2742 - accuracy: 0.8700\n",
      "Epoch 120/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2741 - accuracy: 0.8700\n",
      "Epoch 121/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2737 - accuracy: 0.8700\n",
      "Epoch 122/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2735 - accuracy: 0.8700\n",
      "Epoch 123/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2735 - accuracy: 0.8700\n",
      "Epoch 124/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2732 - accuracy: 0.8700\n",
      "Epoch 125/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2729 - accuracy: 0.8700\n",
      "Epoch 126/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2727 - accuracy: 0.8700\n",
      "Epoch 127/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2724 - accuracy: 0.8700\n",
      "Epoch 128/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2724 - accuracy: 0.8700\n",
      "Epoch 129/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2722 - accuracy: 0.8700\n",
      "Epoch 130/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2721 - accuracy: 0.8700\n",
      "Epoch 131/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2719 - accuracy: 0.8700\n",
      "Epoch 132/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2716 - accuracy: 0.8700\n",
      "Epoch 133/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2714 - accuracy: 0.8700\n",
      "Epoch 134/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2712 - accuracy: 0.8700\n",
      "Epoch 135/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2711 - accuracy: 0.8700\n",
      "Epoch 136/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2708 - accuracy: 0.8700\n",
      "Epoch 137/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2707 - accuracy: 0.8700\n",
      "Epoch 138/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2706 - accuracy: 0.8700\n",
      "Epoch 139/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2703 - accuracy: 0.8700\n",
      "Epoch 140/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2703 - accuracy: 0.8700\n",
      "Epoch 141/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2700 - accuracy: 0.8700\n",
      "Epoch 142/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2699 - accuracy: 0.8700\n",
      "Epoch 143/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2697 - accuracy: 0.8700\n",
      "Epoch 144/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2696 - accuracy: 0.8700\n",
      "Epoch 145/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2693 - accuracy: 0.8700\n",
      "Epoch 146/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2694 - accuracy: 0.8700\n",
      "Epoch 147/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2692 - accuracy: 0.8700\n",
      "Epoch 148/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2690 - accuracy: 0.8700\n",
      "Epoch 149/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2690 - accuracy: 0.8700\n",
      "Epoch 150/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2688 - accuracy: 0.8700\n",
      "Epoch 151/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2686 - accuracy: 0.8700\n",
      "Epoch 152/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2684 - accuracy: 0.8700\n",
      "Epoch 153/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2683 - accuracy: 0.8700\n",
      "Epoch 154/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2683 - accuracy: 0.8700\n",
      "Epoch 155/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2681 - accuracy: 0.8700\n",
      "Epoch 156/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2680 - accuracy: 0.8700\n",
      "Epoch 157/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2679 - accuracy: 0.8700\n",
      "Epoch 158/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2677 - accuracy: 0.8700\n",
      "Epoch 159/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2676 - accuracy: 0.8700\n",
      "Epoch 160/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2675 - accuracy: 0.8700\n",
      "Epoch 161/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2674 - accuracy: 0.8700\n",
      "Epoch 162/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2672 - accuracy: 0.8700\n",
      "Epoch 163/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2672 - accuracy: 0.8700\n",
      "Epoch 164/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2670 - accuracy: 0.8700\n",
      "Epoch 165/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2671 - accuracy: 0.8700\n",
      "Epoch 166/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2669 - accuracy: 0.8700\n",
      "Epoch 167/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2667 - accuracy: 0.8700\n",
      "Epoch 168/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2666 - accuracy: 0.8700\n",
      "Epoch 169/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2665 - accuracy: 0.8700\n",
      "Epoch 170/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2664 - accuracy: 0.8700\n",
      "Epoch 171/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2664 - accuracy: 0.8700\n",
      "Epoch 172/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2664 - accuracy: 0.8700\n",
      "Epoch 173/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2661 - accuracy: 0.8700\n",
      "Epoch 174/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2661 - accuracy: 0.8700\n",
      "Epoch 175/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2661 - accuracy: 0.8700\n",
      "Epoch 176/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2659 - accuracy: 0.8700\n",
      "Epoch 177/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2658 - accuracy: 0.8700\n",
      "Epoch 178/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2658 - accuracy: 0.8700\n",
      "Epoch 179/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2658 - accuracy: 0.8700\n",
      "Epoch 180/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2655 - accuracy: 0.8700\n",
      "Epoch 181/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2655 - accuracy: 0.8700\n",
      "Epoch 182/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2654 - accuracy: 0.8700\n",
      "Epoch 183/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2654 - accuracy: 0.8700\n",
      "Epoch 184/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2652 - accuracy: 0.8700\n",
      "Epoch 185/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2652 - accuracy: 0.8700\n",
      "Epoch 186/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2653 - accuracy: 0.8700\n",
      "Epoch 187/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2651 - accuracy: 0.8700\n",
      "Epoch 188/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2649 - accuracy: 0.8700\n",
      "Epoch 189/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2649 - accuracy: 0.8700\n",
      "Epoch 190/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2648 - accuracy: 0.8700\n",
      "Epoch 191/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2648 - accuracy: 0.8700\n",
      "Epoch 192/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2649 - accuracy: 0.8700\n",
      "Epoch 193/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2646 - accuracy: 0.8700\n",
      "Epoch 194/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8700\n",
      "Epoch 195/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2645 - accuracy: 0.8700\n",
      "Epoch 196/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8700\n",
      "Epoch 197/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2644 - accuracy: 0.8700\n",
      "Epoch 198/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2644 - accuracy: 0.8700\n",
      "Epoch 199/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2643 - accuracy: 0.8700\n",
      "Epoch 200/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2643 - accuracy: 0.8700\n",
      "Epoch 201/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8700\n",
      "Epoch 202/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8700\n",
      "Epoch 203/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 204/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2640 - accuracy: 0.8800\n",
      "Epoch 205/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2640 - accuracy: 0.8800\n",
      "Epoch 206/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 207/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 208/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2637 - accuracy: 0.8800TA: 0s - loss: 0.2500 - accuracy\n",
      "Epoch 209/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 210/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 211/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 212/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 213/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 214/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 215/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 216/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 217/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 218/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 219/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 220/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 221/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 222/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 223/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 224/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 225/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 226/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 227/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 228/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 229/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 230/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 231/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 232/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 233/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 234/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 235/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 236/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 237/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 238/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 239/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 240/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 241/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 242/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 243/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 244/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 245/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 246/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 247/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 248/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 249/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 250/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 251/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 252/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 253/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 254/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 255/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 256/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 257/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 258/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800: 0s - loss: 0.2707 - accuracy: 0.\n",
      "Epoch 259/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 260/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 261/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 262/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 263/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 264/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 265/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 266/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 267/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 268/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 269/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 270/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 271/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 272/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 273/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 274/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 275/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 276/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 277/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 278/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 279/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 280/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 281/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 282/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 283/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 284/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 285/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 286/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 287/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 288/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 289/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 290/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 291/300\n",
      "100/100 [==============================] - 2s 17ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 292/300\n",
      "100/100 [==============================] - 2s 17ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 293/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 294/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2610 - accuracy: 0.8800\n",
      "Epoch 295/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2610 - accuracy: 0.8800\n",
      "Epoch 296/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 297/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 298/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2610 - accuracy: 0.8800\n",
      "Epoch 299/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 300/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2611 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x13f996898>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = create_logit()\n",
    "model.fit(X, Y, epochs=300, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predict classes of training points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now predict the class label for each of the inputs in `X`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = model.predict(X)\n",
    "# Assigning outputs below 0.5 to class 0; above to class 1\n",
    "g_pred = (y_pred > 0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Analysis of the logit model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We replicate the neural network layer: multiplying the input by the weights, adding the bias, and applying the activation function. We compare the result with the Keras output to verify that they are the same"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logit(x):\n",
    "    return 1 / (1 + np.exp(-x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "W1, b1 = model.layers[0].get_weights()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.98710496] [0.98710495]\n",
      "[0.98561622] [0.9856162]\n",
      "[0.03150305] [0.03150305]\n",
      "[0.6807293] [0.68072927]\n",
      "[0.00911425] [0.0091143]\n",
      "[0.96528276] [0.96528274]\n",
      "[0.0094252] [0.00942519]\n",
      "[0.12498412] [0.12498409]\n",
      "[0.88455839] [0.8845583]\n",
      "[0.84750096] [0.8475009]\n",
      "[0.98916614] [0.98916614]\n",
      "[0.82092762] [0.8209276]\n",
      "[0.99008573] [0.9900857]\n",
      "[0.98921512] [0.98921514]\n",
      "[0.23291661] [0.23291656]\n",
      "[0.88244946] [0.8824494]\n",
      "[0.94596105] [0.945961]\n",
      "[0.98548819] [0.9854882]\n",
      "[0.06496398] [0.06496397]\n",
      "[0.98072729] [0.9807273]\n",
      "[0.2369584] [0.23695844]\n",
      "[0.02138485] [0.02138487]\n",
      "[0.44200399] [0.442004]\n",
      "[0.91090809] [0.9109081]\n",
      "[0.45173602] [0.45173603]\n",
      "[0.69776626] [0.69776624]\n",
      "[0.00991531] [0.00991535]\n",
      "[0.01532394] [0.01532394]\n",
      "[0.0091004] [0.00910044]\n",
      "[0.76507373] [0.7650738]\n",
      "[0.01068934] [0.01068926]\n",
      "[0.98974777] [0.98974776]\n",
      "[0.68570091] [0.6857009]\n",
      "[0.97182353] [0.9718235]\n",
      "[0.98977881] [0.9897789]\n",
      "[0.92968157] [0.92968154]\n",
      "[0.02558172] [0.02558169]\n",
      "[0.28462642] [0.28462642]\n",
      "[0.05070466] [0.05070466]\n",
      "[0.74734161] [0.74734163]\n",
      "[0.10704685] [0.10704681]\n",
      "[0.0824347] [0.08243465]\n",
      "[0.0107538] [0.01075381]\n",
      "[0.04985763] [0.04985762]\n",
      "[0.98837401] [0.988374]\n",
      "[0.60432699] [0.60432696]\n",
      "[0.017937] [0.01793703]\n",
      "[0.04000844] [0.0400084]\n",
      "[0.03937308] [0.0393731]\n",
      "[0.18404153] [0.18404153]\n",
      "[0.35963436] [0.3596344]\n",
      "[0.01176922] [0.01176924]\n",
      "[0.16692366] [0.16692361]\n",
      "[0.53695474] [0.53695476]\n",
      "[0.06383525] [0.06383517]\n",
      "[0.0133458] [0.01334584]\n",
      "[0.99020103] [0.99020106]\n",
      "[0.95659852] [0.9565985]\n",
      "[0.02111299] [0.02111301]\n",
      "[0.94504709] [0.9450471]\n",
      "[0.03198042] [0.03198037]\n",
      "[0.98334014] [0.98334014]\n",
      "[0.01516785] [0.01516783]\n",
      "[0.80285872] [0.8028587]\n",
      "[0.98830396] [0.98830396]\n",
      "[0.00900817] [0.00900817]\n",
      "[0.97676331] [0.9767633]\n",
      "[0.13927534] [0.13927528]\n",
      "[0.97705815] [0.9770582]\n",
      "[0.95728536] [0.9572854]\n",
      "[0.99010078] [0.99010074]\n",
      "[0.01185737] [0.01185739]\n",
      "[0.90930026] [0.9093003]\n",
      "[0.14184162] [0.14184162]\n",
      "[0.85022641] [0.8502264]\n",
      "[0.52715202] [0.527152]\n",
      "[0.75156401] [0.751564]\n",
      "[0.02594141] [0.02594137]\n",
      "[0.62057925] [0.62057924]\n",
      "[0.98720072] [0.98720074]\n",
      "[0.00939663] [0.00939664]\n",
      "[0.08393345] [0.08393344]\n",
      "[0.01773104] [0.01773104]\n",
      "[0.86542645] [0.8654265]\n",
      "[0.22000378] [0.22000378]\n",
      "[0.37008972] [0.37008974]\n",
      "[0.01322791] [0.01322788]\n",
      "[0.96579954] [0.96579957]\n",
      "[0.29628734] [0.29628736]\n",
      "[0.98050378] [0.9805038]\n",
      "[0.10902132] [0.10902131]\n",
      "[0.60989908] [0.6098991]\n",
      "[0.93089646] [0.9308965]\n",
      "[0.37555198] [0.375552]\n",
      "[0.80630368] [0.80630374]\n",
      "[0.00996038] [0.00996038]\n",
      "[0.18077394] [0.18077391]\n",
      "[0.97221333] [0.9722133]\n",
      "[0.30109915] [0.30109912]\n",
      "[0.9835096] [0.9835096]\n"
     ]
    }
   ],
   "source": [
    "for i in range(0, len(X)):\n",
    "    x = X[i]\n",
    "    y_hat = logit(np.matmul(np.transpose(W1), x) + b1)\n",
    "    print(y_hat, y_pred[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot the separating hyperplanes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's construct the separating hyperplane from the equation of the line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_min = min(X[:,0])\n",
    "x_max = max(X[:,0])\n",
    "\n",
    "y1 = -(b1 + W1[0]*x_min) / W1[1]\n",
    "y2 = -(b1 + W1[0]*x_max) / W1[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:, 0], X[:, 1], s=30, color=colors[Y])\n",
    "plt.plot([x_min, x_max], [y1, y2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$X_1$')\n",
    "plt.ylabel(r'$X_2$');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also simply use our plotting function above to identify the mislabelled points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 1b: Analysis of a FFWD Neural Network with one hidden layer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's now repeat the analysis now using one hidden layer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h1():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add the hidden layer\n",
    "    model.add(Dense(2, input_dim=2, kernel_initializer='normal', activation='relu'))\n",
    "    # Add the output layer\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))\n",
    "    \n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/200\n",
      "100/100 [==============================] - 2s 20ms/step - loss: 0.6923 - accuracy: 0.5000\n",
      "Epoch 2/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6863 - accuracy: 0.5000\n",
      "Epoch 3/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6736 - accuracy: 0.5900\n",
      "Epoch 4/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6561 - accuracy: 0.7400\n",
      "Epoch 5/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6367 - accuracy: 0.8200\n",
      "Epoch 6/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.6159 - accuracy: 0.8200\n",
      "Epoch 7/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5965 - accuracy: 0.8200\n",
      "Epoch 8/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5799 - accuracy: 0.8300\n",
      "Epoch 9/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.5636 - accuracy: 0.8300\n",
      "Epoch 10/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5496 - accuracy: 0.8300\n",
      "Epoch 11/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5378 - accuracy: 0.8300\n",
      "Epoch 12/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5261 - accuracy: 0.8400\n",
      "Epoch 13/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5160 - accuracy: 0.8400\n",
      "Epoch 14/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5060 - accuracy: 0.8400\n",
      "Epoch 15/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4973 - accuracy: 0.8400\n",
      "Epoch 16/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.4890 - accuracy: 0.8400\n",
      "Epoch 17/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4805 - accuracy: 0.8400\n",
      "Epoch 18/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4727 - accuracy: 0.8500\n",
      "Epoch 19/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4657 - accuracy: 0.8500\n",
      "Epoch 20/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4584 - accuracy: 0.8500\n",
      "Epoch 21/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4529 - accuracy: 0.8500\n",
      "Epoch 22/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.4457 - accuracy: 0.8500\n",
      "Epoch 23/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4392 - accuracy: 0.8500\n",
      "Epoch 24/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4341 - accuracy: 0.8500\n",
      "Epoch 25/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4275 - accuracy: 0.8600\n",
      "Epoch 26/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4222 - accuracy: 0.8600\n",
      "Epoch 27/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4169 - accuracy: 0.8600\n",
      "Epoch 28/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4118 - accuracy: 0.8500\n",
      "Epoch 29/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4072 - accuracy: 0.8600\n",
      "Epoch 30/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.4030 - accuracy: 0.8600\n",
      "Epoch 31/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3982 - accuracy: 0.8600\n",
      "Epoch 32/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3942 - accuracy: 0.8600\n",
      "Epoch 33/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3905 - accuracy: 0.8600\n",
      "Epoch 34/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3864 - accuracy: 0.8600\n",
      "Epoch 35/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3828 - accuracy: 0.8700\n",
      "Epoch 36/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3796 - accuracy: 0.8700\n",
      "Epoch 37/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3760 - accuracy: 0.8700\n",
      "Epoch 38/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3729 - accuracy: 0.8700\n",
      "Epoch 39/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3698 - accuracy: 0.8700\n",
      "Epoch 40/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3669 - accuracy: 0.8700\n",
      "Epoch 41/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3647 - accuracy: 0.8700\n",
      "Epoch 42/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3613 - accuracy: 0.8700\n",
      "Epoch 43/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3598 - accuracy: 0.8700\n",
      "Epoch 44/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3565 - accuracy: 0.8700\n",
      "Epoch 45/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3539 - accuracy: 0.8700\n",
      "Epoch 46/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3522 - accuracy: 0.8700\n",
      "Epoch 47/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3502 - accuracy: 0.8700\n",
      "Epoch 48/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3474 - accuracy: 0.8700\n",
      "Epoch 49/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3463 - accuracy: 0.8700\n",
      "Epoch 50/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3446 - accuracy: 0.8700\n",
      "Epoch 51/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3419 - accuracy: 0.8800\n",
      "Epoch 52/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3405 - accuracy: 0.8800\n",
      "Epoch 53/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3393 - accuracy: 0.8800\n",
      "Epoch 54/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3372 - accuracy: 0.8800\n",
      "Epoch 55/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3356 - accuracy: 0.8800\n",
      "Epoch 56/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3340 - accuracy: 0.8700\n",
      "Epoch 57/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3328 - accuracy: 0.8700\n",
      "Epoch 58/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3311 - accuracy: 0.8800\n",
      "Epoch 59/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3296 - accuracy: 0.8800: 0s - loss: 0.2558 - accura\n",
      "Epoch 60/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3285 - accuracy: 0.8700\n",
      "Epoch 61/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3270 - accuracy: 0.8700\n",
      "Epoch 62/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3261 - accuracy: 0.8700\n",
      "Epoch 63/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3252 - accuracy: 0.8700\n",
      "Epoch 64/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3237 - accuracy: 0.8700\n",
      "Epoch 65/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3228 - accuracy: 0.8700\n",
      "Epoch 66/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3220 - accuracy: 0.8700\n",
      "Epoch 67/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3210 - accuracy: 0.8700\n",
      "Epoch 68/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3199 - accuracy: 0.8700\n",
      "Epoch 69/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3190 - accuracy: 0.8700\n",
      "Epoch 70/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3183 - accuracy: 0.8700\n",
      "Epoch 71/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3175 - accuracy: 0.8800\n",
      "Epoch 72/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3165 - accuracy: 0.8800\n",
      "Epoch 73/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3158 - accuracy: 0.8800\n",
      "Epoch 74/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3163 - accuracy: 0.8800\n",
      "Epoch 75/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3149 - accuracy: 0.8700\n",
      "Epoch 76/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3139 - accuracy: 0.8700\n",
      "Epoch 77/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3129 - accuracy: 0.8700\n",
      "Epoch 78/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3119 - accuracy: 0.8800\n",
      "Epoch 79/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3119 - accuracy: 0.8700\n",
      "Epoch 80/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3114 - accuracy: 0.8800\n",
      "Epoch 81/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3106 - accuracy: 0.8800\n",
      "Epoch 82/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3108 - accuracy: 0.8800\n",
      "Epoch 83/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3095 - accuracy: 0.8700\n",
      "Epoch 84/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3086 - accuracy: 0.8700\n",
      "Epoch 85/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3081 - accuracy: 0.8800\n",
      "Epoch 86/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3082 - accuracy: 0.8700\n",
      "Epoch 87/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3076 - accuracy: 0.8800\n",
      "Epoch 88/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3064 - accuracy: 0.8800\n",
      "Epoch 89/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3066 - accuracy: 0.8700\n",
      "Epoch 90/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3062 - accuracy: 0.8700\n",
      "Epoch 91/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3060 - accuracy: 0.8800\n",
      "Epoch 92/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3050 - accuracy: 0.8700\n",
      "Epoch 93/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3046 - accuracy: 0.8700\n",
      "Epoch 94/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3043 - accuracy: 0.8700\n",
      "Epoch 95/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3035 - accuracy: 0.8700\n",
      "Epoch 96/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3036 - accuracy: 0.8700\n",
      "Epoch 97/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3034 - accuracy: 0.8700\n",
      "Epoch 98/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3026 - accuracy: 0.8800\n",
      "Epoch 99/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3026 - accuracy: 0.8700\n",
      "Epoch 100/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3018 - accuracy: 0.8700\n",
      "Epoch 101/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3014 - accuracy: 0.8800\n",
      "Epoch 102/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3020 - accuracy: 0.8800\n",
      "Epoch 103/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3005 - accuracy: 0.8800\n",
      "Epoch 104/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3006 - accuracy: 0.8800\n",
      "Epoch 105/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3005 - accuracy: 0.8800\n",
      "Epoch 106/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2998 - accuracy: 0.8800\n",
      "Epoch 107/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2999 - accuracy: 0.8800\n",
      "Epoch 108/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2987 - accuracy: 0.8800\n",
      "Epoch 109/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2979 - accuracy: 0.8800\n",
      "Epoch 110/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2978 - accuracy: 0.8800\n",
      "Epoch 111/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2974 - accuracy: 0.8800\n",
      "Epoch 112/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2969 - accuracy: 0.8800\n",
      "Epoch 113/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2963 - accuracy: 0.8800\n",
      "Epoch 114/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2965 - accuracy: 0.8800\n",
      "Epoch 115/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2959 - accuracy: 0.8800\n",
      "Epoch 116/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2959 - accuracy: 0.8800\n",
      "Epoch 117/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2952 - accuracy: 0.8800\n",
      "Epoch 118/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2953 - accuracy: 0.8800\n",
      "Epoch 119/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2949 - accuracy: 0.8800\n",
      "Epoch 120/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2942 - accuracy: 0.8800\n",
      "Epoch 121/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2941 - accuracy: 0.8800\n",
      "Epoch 122/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2936 - accuracy: 0.8800\n",
      "Epoch 123/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2935 - accuracy: 0.8800\n",
      "Epoch 124/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2937 - accuracy: 0.8800\n",
      "Epoch 125/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2930 - accuracy: 0.8800\n",
      "Epoch 126/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2928 - accuracy: 0.8800\n",
      "Epoch 127/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2925 - accuracy: 0.8800\n",
      "Epoch 128/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2923 - accuracy: 0.8800\n",
      "Epoch 129/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2920 - accuracy: 0.8800\n",
      "Epoch 130/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2914 - accuracy: 0.8800\n",
      "Epoch 131/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2910 - accuracy: 0.8800\n",
      "Epoch 132/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2905 - accuracy: 0.8800\n",
      "Epoch 133/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2902 - accuracy: 0.8800\n",
      "Epoch 134/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2895 - accuracy: 0.8800\n",
      "Epoch 135/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2896 - accuracy: 0.8800\n",
      "Epoch 136/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2891 - accuracy: 0.8800\n",
      "Epoch 137/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2888 - accuracy: 0.8800\n",
      "Epoch 138/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2883 - accuracy: 0.8800\n",
      "Epoch 139/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2894 - accuracy: 0.8800\n",
      "Epoch 140/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2876 - accuracy: 0.8800\n",
      "Epoch 141/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2870 - accuracy: 0.8800\n",
      "Epoch 142/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2869 - accuracy: 0.8800\n",
      "Epoch 143/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2881 - accuracy: 0.8800\n",
      "Epoch 144/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2864 - accuracy: 0.8800\n",
      "Epoch 145/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2857 - accuracy: 0.8800\n",
      "Epoch 146/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2862 - accuracy: 0.8800\n",
      "Epoch 147/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2853 - accuracy: 0.8800\n",
      "Epoch 148/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2852 - accuracy: 0.8800\n",
      "Epoch 149/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2853 - accuracy: 0.8800\n",
      "Epoch 150/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2842 - accuracy: 0.8800\n",
      "Epoch 151/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2842 - accuracy: 0.8800\n",
      "Epoch 152/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2839 - accuracy: 0.8800\n",
      "Epoch 153/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2839 - accuracy: 0.8800\n",
      "Epoch 154/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2835 - accuracy: 0.8800\n",
      "Epoch 155/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2839 - accuracy: 0.8800\n",
      "Epoch 156/200\n",
      "100/100 [==============================] - ETA: 0s - loss: 0.2977 - accuracy: 0.87 - 0s 4ms/step - loss: 0.2829 - accuracy: 0.8800\n",
      "Epoch 157/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2833 - accuracy: 0.8800\n",
      "Epoch 158/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2823 - accuracy: 0.8800\n",
      "Epoch 159/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2838 - accuracy: 0.8800\n",
      "Epoch 160/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2823 - accuracy: 0.8800\n",
      "Epoch 161/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2815 - accuracy: 0.8800\n",
      "Epoch 162/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2820 - accuracy: 0.8800\n",
      "Epoch 163/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2825 - accuracy: 0.8800\n",
      "Epoch 164/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2811 - accuracy: 0.8800\n",
      "Epoch 165/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2813 - accuracy: 0.8800\n",
      "Epoch 166/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2809 - accuracy: 0.8800\n",
      "Epoch 167/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2805 - accuracy: 0.8800\n",
      "Epoch 168/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2807 - accuracy: 0.8800\n",
      "Epoch 169/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2805 - accuracy: 0.8800\n",
      "Epoch 170/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2805 - accuracy: 0.8800\n",
      "Epoch 171/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2811 - accuracy: 0.8800\n",
      "Epoch 172/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2797 - accuracy: 0.8800\n",
      "Epoch 173/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2796 - accuracy: 0.8800\n",
      "Epoch 174/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2796 - accuracy: 0.8800\n",
      "Epoch 175/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2798 - accuracy: 0.8800\n",
      "Epoch 176/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2794 - accuracy: 0.8800\n",
      "Epoch 177/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2800 - accuracy: 0.8800\n",
      "Epoch 178/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2786 - accuracy: 0.8800\n",
      "Epoch 179/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2785 - accuracy: 0.8800\n",
      "Epoch 180/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2791 - accuracy: 0.8800\n",
      "Epoch 181/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2789 - accuracy: 0.8800\n",
      "Epoch 182/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2790 - accuracy: 0.8800\n",
      "Epoch 183/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2784 - accuracy: 0.8800\n",
      "Epoch 184/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2790 - accuracy: 0.8800\n",
      "Epoch 185/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2780 - accuracy: 0.8800\n",
      "Epoch 186/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2780 - accuracy: 0.8800\n",
      "Epoch 187/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2778 - accuracy: 0.8800\n",
      "Epoch 188/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2774 - accuracy: 0.8800\n",
      "Epoch 189/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2770 - accuracy: 0.8800\n",
      "Epoch 190/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2769 - accuracy: 0.8800\n",
      "Epoch 191/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2778 - accuracy: 0.8800\n",
      "Epoch 192/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2766 - accuracy: 0.8800\n",
      "Epoch 193/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2774 - accuracy: 0.8800\n",
      "Epoch 194/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2763 - accuracy: 0.8800\n",
      "Epoch 195/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2768 - accuracy: 0.8800\n",
      "Epoch 196/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2765 - accuracy: 0.8800\n",
      "Epoch 197/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2765 - accuracy: 0.8800\n",
      "Epoch 198/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2763 - accuracy: 0.8800\n",
      "Epoch 199/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2774 - accuracy: 0.8800\n",
      "Epoch 200/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2758 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a48df7400>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h1 = create_model_h1()\n",
    "model_h1.fit(X, Y, epochs=200, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Extract the weights and calculate the hidden layer's activations for each of the data points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "W1, b1 = model_h1.layers[0].get_weights()\n",
    "W2, b2 = model_h1.layers[1].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    Z1[i], Z2[i] = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's view the input after transformation through the hidden layer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W2 = W2.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b2 + W2[0]*z1_min) / W2[1]\n",
    "z2 = -(b2 + W2[0]*z1_max) / W2[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(1)}_1$')\n",
    "plt.ylabel(r'$Z^{(1)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h1, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 1c: Analysis of FFWD Neural Network Model with Two Hidden Layers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Again, we define a function for creating the model, this time with two hidden layers containing two units each."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h2():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add hidden layer 1...  \n",
    "    model.add(Dense(2, input_dim=2, kernel_initializer='normal', activation='relu')) \n",
    "    # ...hidden layer 2...\n",
    "    model.add(Dense(2, kernel_initializer='normal', activation='relu'))              \n",
    "    # ...and the output layer.\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))           \n",
    "    \n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/200\n",
      "100/100 [==============================] - 2s 19ms/step - loss: 0.6933 - accuracy: 0.4900\n",
      "Epoch 2/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6930 - accuracy: 0.4900\n",
      "Epoch 3/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6906 - accuracy: 0.7700\n",
      "Epoch 4/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6815 - accuracy: 0.8400\n",
      "Epoch 5/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6599 - accuracy: 0.8300\n",
      "Epoch 6/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6257 - accuracy: 0.8400\n",
      "Epoch 7/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5812 - accuracy: 0.8400\n",
      "Epoch 8/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5313 - accuracy: 0.8500\n",
      "Epoch 9/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4838 - accuracy: 0.8500\n",
      "Epoch 10/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4406 - accuracy: 0.8400\n",
      "Epoch 11/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4056 - accuracy: 0.8500\n",
      "Epoch 12/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3783 - accuracy: 0.8500\n",
      "Epoch 13/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3566 - accuracy: 0.8500\n",
      "Epoch 14/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3407 - accuracy: 0.8500\n",
      "Epoch 15/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3283 - accuracy: 0.8500\n",
      "Epoch 16/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3192 - accuracy: 0.8600\n",
      "Epoch 17/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3111 - accuracy: 0.8600\n",
      "Epoch 18/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3041 - accuracy: 0.8600\n",
      "Epoch 19/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3002 - accuracy: 0.8600\n",
      "Epoch 20/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2950 - accuracy: 0.8700\n",
      "Epoch 21/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2913 - accuracy: 0.8600\n",
      "Epoch 22/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2891 - accuracy: 0.8700\n",
      "Epoch 23/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2855 - accuracy: 0.8600\n",
      "Epoch 24/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2846 - accuracy: 0.8700\n",
      "Epoch 25/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2820 - accuracy: 0.8700\n",
      "Epoch 26/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2795 - accuracy: 0.8700\n",
      "Epoch 27/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2790 - accuracy: 0.8700\n",
      "Epoch 28/200\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2775 - accuracy: 0.8700\n",
      "Epoch 29/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2767 - accuracy: 0.8800\n",
      "Epoch 30/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2756 - accuracy: 0.8700\n",
      "Epoch 31/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2756 - accuracy: 0.8700\n",
      "Epoch 32/200\n",
      "100/100 [==============================] - 2s 21ms/step - loss: 0.2728 - accuracy: 0.8800\n",
      "Epoch 33/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2722 - accuracy: 0.8800\n",
      "Epoch 34/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2721 - accuracy: 0.8700\n",
      "Epoch 35/200\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.2729 - accuracy: 0.8800\n",
      "Epoch 36/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2707 - accuracy: 0.8800\n",
      "Epoch 37/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2701 - accuracy: 0.8800\n",
      "Epoch 38/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2702 - accuracy: 0.8800\n",
      "Epoch 39/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2692 - accuracy: 0.8800\n",
      "Epoch 40/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2694 - accuracy: 0.8800\n",
      "Epoch 41/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2695 - accuracy: 0.8800\n",
      "Epoch 42/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2674 - accuracy: 0.8800\n",
      "Epoch 43/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2698 - accuracy: 0.8800\n",
      "Epoch 44/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2686 - accuracy: 0.8800\n",
      "Epoch 45/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2675 - accuracy: 0.8800\n",
      "Epoch 46/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2672 - accuracy: 0.8800\n",
      "Epoch 47/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2671 - accuracy: 0.8800\n",
      "Epoch 48/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2665 - accuracy: 0.8800\n",
      "Epoch 49/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2675 - accuracy: 0.8800\n",
      "Epoch 50/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2667 - accuracy: 0.8800\n",
      "Epoch 51/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2693 - accuracy: 0.8800\n",
      "Epoch 52/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2660 - accuracy: 0.8800\n",
      "Epoch 53/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2659 - accuracy: 0.8800\n",
      "Epoch 54/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2656 - accuracy: 0.8800\n",
      "Epoch 55/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2656 - accuracy: 0.8800\n",
      "Epoch 56/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2668 - accuracy: 0.8800\n",
      "Epoch 57/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2658 - accuracy: 0.8800\n",
      "Epoch 58/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 59/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2656 - accuracy: 0.8800\n",
      "Epoch 60/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2659 - accuracy: 0.8800\n",
      "Epoch 61/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2669 - accuracy: 0.8800\n",
      "Epoch 62/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2651 - accuracy: 0.8800\n",
      "Epoch 63/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2651 - accuracy: 0.8800\n",
      "Epoch 64/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2651 - accuracy: 0.8800\n",
      "Epoch 65/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 66/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 67/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2652 - accuracy: 0.8800\n",
      "Epoch 68/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 69/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2654 - accuracy: 0.8800\n",
      "Epoch 70/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2654 - accuracy: 0.8800\n",
      "Epoch 71/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 72/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2643 - accuracy: 0.8800\n",
      "Epoch 73/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 74/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 75/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 76/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2640 - accuracy: 0.8800\n",
      "Epoch 77/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2644 - accuracy: 0.8800\n",
      "Epoch 78/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2648 - accuracy: 0.8800\n",
      "Epoch 79/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2644 - accuracy: 0.8800\n",
      "Epoch 80/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2642 - accuracy: 0.8800\n",
      "Epoch 81/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2643 - accuracy: 0.8800\n",
      "Epoch 82/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2651 - accuracy: 0.8800\n",
      "Epoch 83/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2659 - accuracy: 0.8800\n",
      "Epoch 84/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2652 - accuracy: 0.8800\n",
      "Epoch 85/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 86/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 87/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 88/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 89/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 90/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 91/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 92/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 93/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 94/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2640 - accuracy: 0.8800\n",
      "Epoch 95/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 96/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 97/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2648 - accuracy: 0.8800\n",
      "Epoch 98/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 99/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 100/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 101/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 102/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 103/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 104/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2650 - accuracy: 0.8800\n",
      "Epoch 105/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 106/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 107/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 108/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 109/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 110/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 111/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 112/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 113/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 114/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 115/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 116/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 117/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 118/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 119/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 120/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 121/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2640 - accuracy: 0.8800\n",
      "Epoch 122/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 123/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 124/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 125/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 126/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 127/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 128/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 129/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2662 - accuracy: 0.8900\n",
      "Epoch 130/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 131/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 132/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 133/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 134/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 135/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 136/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 137/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 138/200\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 139/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 140/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 141/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 142/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2640 - accuracy: 0.8800\n",
      "Epoch 143/200\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 144/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 145/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 146/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 147/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2646 - accuracy: 0.8800\n",
      "Epoch 148/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2658 - accuracy: 0.8800\n",
      "Epoch 149/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 150/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 151/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 152/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 153/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2656 - accuracy: 0.8800\n",
      "Epoch 154/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2647 - accuracy: 0.8800\n",
      "Epoch 155/200\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 156/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 157/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 158/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 159/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 160/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 161/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 162/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 163/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 164/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 165/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 166/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 167/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800 ETA: 0s - loss: 0.2910 - accu\n",
      "Epoch 168/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 169/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 170/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8900\n",
      "Epoch 171/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 172/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 173/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 174/200\n",
      "100/100 [==============================] - 2s 18ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 175/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2644 - accuracy: 0.8800\n",
      "Epoch 176/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 177/200\n",
      "100/100 [==============================] - 2s 16ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 178/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 179/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 180/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 181/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 182/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 183/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 184/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 185/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 186/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 187/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 188/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2642 - accuracy: 0.8800\n",
      "Epoch 189/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 190/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 191/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 192/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 193/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 194/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 195/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 196/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 197/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 198/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 199/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 200/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2637 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a46835048>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h2 = create_model_h2()\n",
    "model_h2.fit(X, Y, epochs=200, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Extract the weights and calculate the second hidden layer's activations for each of the data points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "\n",
    "W1, b1 = model_h2.layers[0].get_weights()\n",
    "W2, b2 = model_h2.layers[1].get_weights()\n",
    "W3, b3 = model_h2.layers[2].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    z = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)\n",
    "    Z1[i], Z2[i] = np.maximum(np.matmul(np.transpose(W2), z) + b2, 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's view the input after transformation through hidden layer 1 and 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEOCAYAAACetPCkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3hU1fbw8e+ekgoJJXQIRRAIIAm9CCrFLtgBua+FEKwUf6JXASuCvVAULyFgpelVBNuliEqHQEILvYeWAOlt2n7/OAkkM5MGmZJkf54nj8nMmZwFkqw5Z6+9lpBSoiiKoihlpfN0AIqiKErlohKHoiiKUi4qcSiKoijlohKHoiiKUi4qcSiKoijlohKHoiiKUi4GTwdQ0UJCQmSLFi08HYaiKEqlsn379gtSynplObbKJY4WLVoQGxvr6TAURVEqFSHEibIeq25VKYqiKOWiEoeiKIpSLipxKIqiKOWiEoeiKIpSLipxKIqiKOWiEoeiKIpSLipxKIqiVGImk4mpU6cybtw4t53TY4lDCOEnhNgqhNgphNgrhHjTyTGPCyGShRDx+R+jPRGroiiKN9q+fTvdu3fntddeY/bs2Rw4cMAt5/XkFUceMEBK2RkIB24XQvRyctwSKWV4/sc894aoKIrifXJycnj55Zfp2bMnu3btolWrVqxZs4a2bdu65fwe2zkutdGDmflfGvM/1DhCRVGUEqxfv57IyEgOHjyIEILnn3+eqVOnEhgY6LYYPLrGIYTQCyHigSRglZRyi5PDHhBC7BJC/CCEaObmEBVFUbxCRkYGY8eOpX///hw8eJD27duzceNGPv74Y7cmDfBw4pBSWqWU4UBToIcQoqPdISuAFlLKG4DVwFfOvo8QYowQIlYIEZucnOzaoBVFUdxs5cqVdOzYkdmzZ6PX65kyZQpxcXH06uXs7r7reUVVlZQyFfgLuN3u8YtSyrz8L6OBrsW8fq6UspuUslu9emVq7qgoiuL1UlJSeOKJJ7jttts4efIkXbp0ITY2lqlTp+Lr6+uxuDxZVVVPCFEr/3N/YBCw3+6YRoW+HALsc1lACT/BF11gXh84rbrrKoriWT/99BNhYWF8+eWX+Pr68s4777BlyxY6d+7s6dA82la9EfCVEEKPlsCWSil/EUK8BcRKKZcD44QQQwALcAl43CWRRPeE01sLfd0duj8Hd81yyekURVGKc/78ecaOHcv3338PQN++fYmJiXFbxVRZCK24qero1q2bLNc8jjM7YK7TO2Dwqgn0xooJTFEUpQRSSr777jvGjx/PpUuXCAwM5J133uHZZ59Fp3P9zSEhxHYpZbeyHFvlBjmV2x/PF//cxk/BJwDi54PBD3qMhY7DQAj3xacoSpV36tQpnn76aX799VcABg0aRHR0NN46zVQlDlNm8c9tnwNZ58GcrX19bickJ8CAt9wTm6IoVZrNZiM6OpoXX3yRjIwMgoOD+fjjj3niiScQXvwG1Suqqjyq5aDin0s7dSVpAJizYOOHkJcJmUmw9nVYOATWvQc5qa6PVVGUKuPIkSMMHDiQp556ioyMDIYOHUpCQgKjRo3y6qQB6ooDgpsU/5zBD8x2VyQ6A5yJhe8fgrwMsObB0dWw7TN4eif413ZtvIqiVGpWq5UZM2YwZcoUcnJyqFevHrNmzeLhhx/2+oRRQF1xBJSw78NmcnxMWmHXt5CbqiUNAEsOZCfD1tmFXmuF1BPa1YmiKAqwd+9e+vbtywsvvEBOTg4jR44kISGBYcOGVZqkASpxlLzQHfYQGAtt5TcGwMDpkLgZbJaix1py4fjf2ucHfoEPG8FnYfBBPfj1OS2RKIpSLZnNZqZOnUpERARbtmyhSZMmrFixgm+//ZaQkBBPh1du6lZVQAha/rQ5PtdhOLS7F+K/BIM/dH8KWg2Ekxvgwj6QhV6jM0KDG+DSEfhhWNG1kfgFENQE+r3i4j+MoijeZvv27YwaNYpdu3YBMGbMGN5//32Cg4M9HNnVU1ccLW6i2Ka8B5dDhwdh5C8w7HstaQDc9JqWSMi/WhE6MPpDrwmw82uwmot+H3M2bP2s6GO5aZC4BbJUby1FqYqKa33+n//8p1InDVCJQ9vgF1jf+XP7fwJnGyQbdITIDdD2HqjdCjoMgzGxUCsUTFmOt7HgynoIwD/T4MOG8M2t8HEo/PIs2Jxc8SiKUimtX7+e8PBw3nvvPWw2G88//zy7du1iwIABng6tQqjEAdD5UeePmzLh/C7nzzXsDCN+hvFH4MGFULeN9niHh7Srj8L0PhD2oPb54f/Bune0NZG8dLDmws6vIG5+xfxZFEXxmMzMTK9pfe5KKnEAdBqhrVHYs+Rq6xnl0bQn9HlJK+X1DdIW1xvcAIPe057fPk/bD1KYOQtiv7i62BVF8Qre1vrcldTiOGi/2H1rQs4lx+e2zIAez5Tv+93yOnSNgsRNEBwKjbsVqt4q5pZU4YV2qxnWvgE7osFq0q5ibv0I/ILKF4eiKC6XkpLCCy+8wIIFCwDo0qULMTExhIeHezgy11FXHAA6PXR+zPlzFw+BJc/5cyUJagxhD0CT7kVLfiMitbLewowB0HXMla+Xj4bNn2h7Q/LStAX3b28rfwyKorjUsmXLCAsLY8GCBUVan1flpAEqcVzR8hYwOLsHKeHU5oo7T5s7oPf/gd4XfIO1W1odh19JHDkpsGeJtqmwgNUE53fD2fiKi0NRlKuWlJTEsGHDuO+++zh37hx9+/YlPj6el19+GYOh6t/IUYmjQOs7wOjn/Lk1L1fceYSAAVPhhdPwyAoYfxSGxkBB2+SsZOfrLTo9ZJwu+piUWlv4o3+CKdvxNYqiVKiC1udhYWEsXbqUwMBAZs6cyT///EO7du08HZ7bVP3UWFZ6g1ZeG/+l43PJCRV/voC60Lyf4+O1W4HBB+y2gmAxQZOeV77OOAffDIaUY1pSsVnh/m+h/b0VH6uiKCQmJvLUU09VmtbnrqSuOAprcXPRFiMFTJmQtNc9MegNMHSBtsFQZwSh1z4fNB0CC7UmWPY4JO/XKrLy0rX//vcRtaFQUSqYzWZj7ty5dOjQgV9//ZXg4GBiYmJYuXJltUwaoBJHUR2GOU8c0gZrJrkvjnZD4NkEuPkN6DcJRm+G3oUGTlny4OgakHYbDYUODv7ivjgVpYoraH3+5JNPkp6eXqlan7uSulVVmNEPQvtqO8btndnu3lhqt4D+xSQrodPWSuw3tQvhfH3EnKuVBvvUhMZd1QRDRSlFVWh97koeSxxCCD/gH8A3P44fpJSv2x3jC3wNdAUuAsOklMddGljT3nDod21Hd2F5adqwJv9aLj19meiN0G4oHFiuVVwVkFJbpyns0B/w/cP5icYGNRvDo2sguKl7Y1aUSmLv3r1ERkayZcsWAB555BFmzJhRKbvYuoonb1XlAQOklJ2BcOB2IYT9FstIIEVK2Rr4BHjP5VF1He28usqSB3+97vi4pwyZB6H9tXJenxoQ2ABG/gZ+hZqn5abB0gfAlKGtg5gyte69/x3hubgVxUsV1/r8u+++U0nDjseuOKSUEiiYcmTM/7C/+TIUeCP/8x+A2UIIkf9a1/CvDdfdBnuXFH3cZoZ9P8IdM1x26nLxC4bHVkH6aW2oVEg7rbqqsMN/aIvrhUmr1pU3N61oklGUasy+9XlUVBQffPBBpe9i6yoeXRwXQuiFEPFAErBKSrnF7pAmwCkAKaUFSAPqOvk+Y4QQsUKI2OTkCqgqCm6mjYi1Z7NqnW3Pxl37OSpKUBOo38ExaYDz9Y4C9glFUaoh+9bnLVu2ZM2aNcydO1cljRJ4NHFIKa1SynCgKdBDCNHR7hBnq1AOVxtSyrlSym5Sym716pUwCrasukRpHW3t5VyEta9DTF9YPfnaz+NqrW/XFtIL0xm1uSK+NYo+bsmD/70A79aBd4JheRTkprsvVkVxM/vW5xMmTGD37t1VpvW5K3lFOa6UMhX4C7jd7qlEoBmAEMIABANOOhFWsJDrYfgyqNVCu/Io+OVrNWm3eiw5Wi+pi4dcHso18QmAf/0BNRppZcYGP6177/3fOh774/+DbZ9Dboq2HrLzG1h4l/tjVhQXc9b6fMOGDXzyySdVqvW5K3myqqoeYJZSpgoh/IFBOC5+LwceAzYBDwJ/unR9o7DrBmvtQLKS4aPGTg4QcGztlTkc3qpZL/i/RLiwX+sAHNzM8ZjMpPwKrULNHK15cHaHtvGxfgf3xasoLrRy5UrGjBnDiRMnMBgMvPzyy0yZMgVfX19Ph1apeHIfRyPgKyGEHu3KZ6mU8hchxFtArJRyORADfCOEOIx2pTHcrREKobUGMfgWnSEO2ppCjYZuDeeq6XRQP6z457OStBJfq10XYJ0BMs6oxKFUevatzyMiIpg/f36V72LrKp6sqtoFRDh5/LVCn+cCD7kzLgc6PfQYC1tnXUkeQq9VJLW5A8w52rrHrm+1Y7s+CTe+rLUOqSxC2jovBrCaoXF356/JSYHEzdq+kIadXRufolyDZcuW8fTTT3Pu3Dl8fX154403eOGFFzAaSygeUUpUiX67edDAadoawZYZ2l6I626Fuz7X3qUvvBtO/KNNCwRYNx0uHYb7vvRoyOWiN8LQ+fDfkdq8dGnTigNu+9j5hsdtc+B/+a3hbRao1wEeXanKexWvkpSUxNixY1m6dCkAffr0ISYmplp1sXUV4a4lA3fp1q2bjI2Ndc/JLhyEL8KLzs4A0PvB/50q2pSwMkg5DnsWa3tWwh6Cek5+wJL3wX+6Fv0z632g4yNw3wK3haooxZFSsnDhQsaPH8/FixcJDAzknXfe4ZlnnkGvV2XoxRFCbJdSdivLseqK41qkndR+aTokDiNknq18iaN2C+hXyuyRfT9qiaUwqwn2/aASh+JxqvW5e3hFOW6l1SjCcUG5QN3r3RuLu+h9HPeGgPM1EkVxE9X63L1U4rgWAXVhwNv5M8TFldkZd32mVWIB7F4Mn7SANw3w+Q1wYr0nI752HYaBsEsSBn9tlnpxsi7A3u/hyCqwWoo/TlGugmp97n5qjaMinN4GuxeCzgfCH71Svnrod1j6YNFSXmMAPBmnbTKsrA7+Cj89qk0ltJmh/X1w75dXkmVh8V/BL0/lD6US4BsET/wDtVu6PWylalGtzytWedY4VOJwpZi+cGpj0ceEAXo84z3NEq+W1aJVjwWEFL+Wk3EWZrS6UnEG2m2upr0hspJfeSkepVqfV7zyJA51q8qVMs85PiYtkJ7o/lgqmt6gVV2VVABw6Hcn3XltcHqLtv9FUcqpoPV5ly5dLrc+X758uWp97mYqcbjS9fc4Nks0BkLboZ6Jx918Ap0vpAud6s6rlNv27dvp1q0br732GiaTiaioKPbu3cs999xT+ouVCqUShyvd9BoEhWojW4VOG7jUpCd0KjRI6eJhrcHgrLbw/TBtn0RVcf09ju3eDX7QcTgYnHQfLpCXAakntDb2SrWnWp97H1VD6UoBdeDZvXDgZ62TbpPu0HKg1jsKIPUkzO2m7UaXVm3N4NBvMCZWawNS2fkEwGN/wg/DtUQA0HYI3DXH+fFWC/w+DuIXaInWGAj3LoDrVZfe6mr9+vVERkZy8OBBhBBMmDCBt99+W3Wx9TCVOFzN4AMdimm3tfFDreJK5r+zljbt3v8/0+D+r90Xoys1ioDn9muNFI0BWofe4qx/F3Z+dWUx3ZwNSx+CZ/ZAnVbuiVfxCpmZmbzyyit89tlnSClp3749MTEx9O7d29OhKahbVZ51Lt5xF7a0wvldnonHVYSAGg1KThqgzQOx70IsrVoDSaXaWLVqFR07dmT27NnodDomT55MXFycShpeRCUOT2reX2sUWJjOAKE3eiYeT3O2C99qcUwmSpWUkpLCqFGjuPXWWzlx4gQRERHExsby9ttvq3kZXkYlDk/qNQH862gLxqAlEb9a0O+VosfZbHD8b9izVNsbUVWFPeikCs1Pe1yp0pYtW0ZYWBgLFizA19eX6dOns2XLFjUvw0upNQ5PCgyBZ3bD1s+1jYKNu0HP57TbOgUyz8OC/lcShtUMA9+GPi94JmZXGvw+nNkOFw8AOu0K5MZXoEkJe5LObNduceVc0qq1wh66UnygeD3V+rxyUjvHvd3iB+Dgcm3uRQGDPzy5Heq191xcriKl1sIlPRGa9oIgZ2N78+39AZY9pi2mS1v+Hpkh8OBC98WrXBX71ucBAQG88847PPvss6r1uYeotupVyaFfiyYN0L4+sLxqJg4hoGkPoEfJx9ls8NuzRdc/zFla6fP53dCgk0vDVK6es9bnc+fOpWVL1b+ssvDYNb0QopkQYq0QYp8QYq8QYryTY24WQqQJIeLzP15z9r2qtIL1j8J0Bu3ddXWWmwK5qU6eEHCmCl1xViFSSofW5/PmzWPlypUqaVQynrzisAAvSCl3CCFqAtuFEKuklAl2x62TUt7tgfi8Q9cxsHV20WFRQgcdHvZcTN7AN1hLqlaT43N1q8DmySrmyJEjREVFsXbtWgCGDBnCnDlzaNy4hFuRitfy2BWHlPKslHJH/ucZwD6giafi8VoDp8ENI7WKK4MfBDWDkb9BjfpFj8tJhX+mwze3wcqXIK0KNFIsid4AN7+ZPwsln8EPGnaGZqre31tYrVY++eQTOnXqxNq1awkJCWHx4sUsW7ZMJY1KzCsWx4UQLYB/gI5SyvRCj98M/BdIBM4AE6WUe528fgwwBiA0NLTriRMnXB+0u5myIC8dajTU1gEKy0nVZp9nndcWivU+VxbQ61znmXjdZe8P2g78vDToOAL6TNRanTgjJWybA+umQ/YFbb/MXZ9VjfYuXighIYHIyEg2b94MaK3PP/30U+rVq+fhyBRnKtU8DiFEDeBvYJqU8ke754IAm5QyUwhxJzBDStmmpO9X5aqqymL9+/DXG3a3s/RaeeoD7tt1LaVk9d5z/Bp3Bh+Djge6N6Nnay9qdb1tDqycWGhBXWj7ZiYcAz/VLK+imM1m3nvvPaZOnYrJZKJx48Z88cUXqoutl6s0VVVCCCPaFcV39kkDoPDVh5TyNyHE50KIECnlBXfG6fVOriuaNEBr1ZG42a1hvLcigT92nSXXrPXe2nrkIk8OaM2IPi3cGkex/plmtwtdantF9iyGbk96LKyqZMeOHYwaNYqdO3cCEBUVxfvvv0+tWrU8HJlSkTxZVSWAGGCflPLjYo5pmH8cQogeaPFedF+UlUSDcMfWJYgrI2zd4GxqDr/tPHM5aQDkmq3858/DRR7zqBwn/3TMOZBxxv2xVDG5ubm88sor9OjRg507dxZpfa6SRtXjyS22fYH/BwwoVG57pxDiKSHEU/nHPAjsEULsBGYCw6Wn7615o57P5Q9NKtg4JbRF41veclsIR5MyMeod5zzrBJxL9ZJpf6E3AnYxGgO0VvfKVVu/fj2dO3fm3XffxWazMWHCBHbv3s2AAQM8HZriIh67VSWlXI/DT7HDMbOB2e6JqBKr0QCejIO/34JTG6BeB22IVMMbHI89v0c7Lmk3NOujHVer+TWH0DwkELPVMadbbZL6QU72onjCnZ9BTG+tgMCcoyWN9vdD836lv9aco13VqXYml6nW59WX2jleVdQKhaHzSj7m/B6Y1yv/Pr/Uhkvt+0kbNlWz0TWdvmmdAG5qV591B5LINdsA8DPqGdm3BQG+XvLPLOR6GH8M9i7Rbk+1uEVLGvZVaoUd/xuWj4aUY9pVXb9J0Pelkl9TDaxatYqoqChOnDiBXq/n5ZdfZsqUKfj5ecmbBMWlvOQnWnGLv964kjRAW0A3Z8GWmTDonWv+9m88cAM/bz/FL3Gn8THoeahnKAPCGpT6utQsE7sTUwmp4Uu7xkEIV/5S9guCrlFlOzblOHx3l/Z3BFo59N9Twb8udB3tshC9WUpKCi+88AILFiwAICIigvnz56suttWMShzVSdIeLieNAlYTnI2rkG+v1wnu7x7K/d1Dy/yapZtPMHvVQYx6gc0GoSEBzHqsO0H+xgqJ6ZrEzXcctGXOgg3vV8vEsWzZMp555hnOnj2Lr68vr7/+OhMnTsRo9IL/V4pbqRu21UnTXoUW0PMZ/Mp2j98FjiVl8tmqg5gsNrLyrOSYrRxJyuTj3/Z5JB4H2RectzTJS3N/LB6UlJTEsGHDuO+++zh79ix9+vQhPj6eV155RSWNakoljurk5te18a0Fw5IMfhAQAt2f8Ug4f+9PwmIregVksUr+3pfkkXgctLvXsZmkzghth3omHjeTUvLdd98RFhbG0qVLCQgIYMaMGfzzzz9qXkY1p25VVSe1W8Ize2HzDDgfD6H9oMez4F/b8ViLCXbMg71LIbC+Nq0wtE+FhmPU69AJsN/lYXBS1usR1w3Wdt/vWaS1K9EZtJYvFbAe5O3sW58PHDiQ6Oho1cVWAVTiqH6CGsOt75V8jJTw3R3aznNzNiC0uSD3fgUdKm6M6+CODYlee6hIGa+vQceQLk0r7BzXRAitUq3nWG1CY3BzaH0b6EoYNCQlbPwINn2kLaa3HAh3ztaq3ioBKSXR0dG8+OKLpKenExwczEcffcSoUaNcW7SgVCrqVpXi6OR6SNxSqD2H1D7/Y7z2i7GC1A/2493hEdQKMOJn1OOj13FLWAOeGlhiOzL3a9gZuj8N199ZctIArYHiX69D5jnt7+zQr1oJtCXPPbFegyNHjjBw4ECefPJJ0tPTGTJkyOVGhSppKIWpKw7F0fldWqmuvcxz2i9AY8XV6vdqHcKvL97C2dQcgvyNZaqmOnkxi7l/HmZvYhqt6tfgyQGtub5RUIXFdNWk1CquCvfDkjYwZWoTGzs85LnYSmC1Wpk5cyaTJ08mJyeHkJAQZs2axbBhw1TCUJxSiUNxVK+Ddj/fXkA9MNj3xLp2ep2gaZ1iWqHbOZ+WwxP/2Uy2yYKUWjuT7ccuET26J20a1qzw2MpF2iAvw/Fxq8lr+2HZtz4fMWIEM2bMUK3PlRKpW1WKoxY3QYMbtJkeBYwBcNtHHt8xvWjTCfIs1st3zCSQZ7Ey/+8jHo0L0G5jNXSyEU7otF3qXsRsNvP2228TERHB5s2bady4McuXL2fhwoUqaSilUlcciiMh4NE12sjavUu0K42+L0LLYn75SQkn1mkLyLVa5Jexuqb1xJHzmVjsemJJqe0J8QpDY+DLm8Fq1npiGQMg4gnnfcM8xL71+ejRo/nggw9UF1ulzFTiUJwz+kHfidpHSWw2WHI/HF2d/4vSH1b/G6K2as0XK1iXFrXZeTIFk8V2+TG9ThDe3ElJsSc0ioDxR2H3IshOhtZ3QLNeJb9GSq3sOf4r7e+v+7PQquI7y+bm5vLmm2/ywQcfYLVaadmyJdHR0QwcqLoDK+WjEodybQ4s15JGQT8nU6aWQFa/AvfOr/DTPdgjlJ+3J5KSZSLPYsPHoMPfR8+om7xoRG5AXa3VfVmtGKMlmoK/w8N/wKB3tTLgCrJhwwYiIyM5cOAAQgjGjx/PtGnTCAwMLP3FimJHJQ7l2hz85covvAI2Cxz63SWnq+lv5Ntn+vDz9tPsPJlC24Y1ub9HKLUDfUp97dnUHM6n5dK6QQ1q+HlJq4yUY7DrWy3ZFjBnw5pJ0CXqmm/5ZWZmMmnSJGbPno2Uknbt2hETE0OfPhW7mVOpXlTiUK5NzcZaCxP7nk6BrltgreFnZGTfFozs26JMx5stNqZ8v5NNhy9g1OuwWG08PagNw3uX7fUudX6X9vdXOHEUSE+Euq2v+luvWrWKMWPGcPz4cdX6XKlQqqpKuTZdRl/pfVXAGAD9p3gmHie+XHeUzYcv5DdTtJBnsTFnzSH2JqZ6OjQIaactpNuzWbWkfBVSU1OJjIzk1ltv5fjx44SHh7Nt2zbefvttlTSUCqESh3JtaoVqFViNumidd2s0gjtmQseHS35d1gXITXdLiL/EnSav0GI6gMli44+dZ91y/hKFtIU2d2rJtoAxEPq9Aj5l29tS2M8//0xYWBjz58/Hx8eH6dOns3XrViIiIiowaKW689itKiFEM+BroCFgA+ZKKWfYHSOAGcCdQDbwuJRyh7tjVUrRtAc8ub1sx144AN8Pgwv5rdOvuw3u/wb8gl0WXnE7T7xmU/SDiyH2PxC/QKuq6jkOwsrXEywpKYlx48axZMkSAPr06UNMTIzqYqu4hCevOCzAC1LK9kAv4FkhRJjdMXcAbfI/xgBz3BuiUqGsZlhwk3Zf32rSPo6shB//5dLTDunSFF9D0X/qPgYdd4Zf3a2gCqc3QM9n4clYGLVOa01SxqwmpWThwoWEhYWxZMkS1fpccQuPJQ4p5dmCqwcpZQawD2hid9hQ4Gup2QzUEkJc23BsxXOOrS06uhbAmqcljxzXrTc82q8lN7Wvj49BR6CvAT+jjvG3taVdY9dd5bhDYmIiQ4YMYeTIkVy8eJGBAweyZ88exo0bh15fSjNGRbkGXlFVJYRoAUQAW+yeagKcKvR1Yv5jRW5OCyHGoF2REBpaOdpXV0umTJzfOBLOq4oqiEGv460HO3MhI4+k9Fxa1gvE36f0f/qHzqWzLDaRXLOVwZ0a0fO6ul7R9E9Kybx585g4caJqfa54hMcThxCiBvBfYIKU0n611NlPgUNfbynlXGAuQLdu3Squ77dSsVoOcJzhjYA610HNhi4/fUhNX0Jqlq1J48pdZ5m2fA9miw2bhDV7z3Nvt6ZMuN2zt3+OHDlCVFQUa9euBWDIkCF8/vnnNGlif7GuKK7j0aoqIYQRLWl8J6X80ckhiUCzQl83BbyzzahSOv9acP+3WvNEn5rgE6SNrn3oe09HVoTFauODXxPIM2tJAyDXbOXHbac4m5rjkZisViuffPIJnTp1Yu3atYSEhLBo0SKWLVumkobidp6sqhJADLBPSvlxMYctB54TQiwGegJpUkovqKFUrlrY/dDyjNamxBgArQaBoYRd37lp2gjb01uhcXdt34i/a5vxJWfkYbbaHB436AX7TqfRqJa/k1e5jmp9rngbT96q6gv8P2C3ECI+/7FJQCiAlPIL4De0UtzDaOW4T3ggTqWi+dcq2wja7IvwRbj2X0sOHFgBmz+Bp+JdujO9doCP0xR7XQ0AACAASURBVEGHNpss89yQimA2m3nvvfeYOnUqJpOJxo0b88UXX3DPPfe4LQZFccZjiUNKuZ7iS+wLjpHAs+6JSPE6Gz+GrGSt8gq05JFthQ0flj43/Rr4+eh5uFdzvt9yklyzNgnRx6CjfZNgt00aVK3PFW/m8cVxRSnW8T+vJI0CVhMc+9Plp35mUBsa1/Jn6ZYT5Jpt3NapIY+7oQOvan2uVAZlThxCiHpAEHBSSumkuY6iVLB6HeD0tqLzz4Ue6tvvE614Qgju696M+7o3K/3gfMeTM3lvRQK7T6USFGDk8X6teKhnaJlLZFXrc6WyKDVx5O+R6AfkAKlAEyFEGvCBlPKYi+NTqrO+L2kTCE1ZaFXYAgx+cOMrno7MQUaOmah5W8jMtSCBS5kmPl99CCHgoZ7NS3ytan2uVDZlueKIzd8ncZkQIhDwkn4NSpUVcj1EbtRmU5yL1+agD5wO9UrZS2GzaZsNfWu6rSHVqj3nMFttRTYZ5ZqtfLXuWImJw771+b///W9effVV1cVW8WqlJg5nTQWllFnAIZdEpCiFNegEj6wo+/Gxc2H1y2DK0PaI3DGrbBVc1+hSZh55ZscS3owc53d1U1NTeeGFF5g/X5uSGB4ezvz581UXW6VSKHUDoBBikBAiWggRnv/1GNeHpShX4eCv8L/nITdFm0KYeQ6WPaatk7hYt1Z18TUW7Q8lBHR2MgvdvvX5tGnTVOtzpVIpy87xZ4EXgX8JIQYA4a4NSVGu0oYP8psoFmLOgS0zXX7qzqG1GNihAX5GHToB/j56gvyMvHhX+8vHJCcnM3z4cO69917Onj1L7969iY+PZ9KkSRiNXjLKVlHKoCxrHMlSylRgohDiXaC7i2NSlKuTm+LkQQnZF1x+aiEEU+7tyJCuTdlx7BIhNX0Z0KEhgb4GpJQsWrSIcePGcfHiRQICApg+fTrPPfccQuiIP5FCZq6ZiOZ1CPRTFfKK9yvLv9JfCz6RUr4shBhb+EkhxGDgYeAzKWW8EGKM/WK6orhFh4fh4sGinXaNgdBxuFtOL4Sgc2htOodeuT11+vRpnnrqKX755RcABg4cyNy5c2nVqhXnUnN4esE20rJNCCGw2Gy8dm9HBnZUkwMU71aWW1X/K/yFlHIWgBCioOzjGdStLMUb9P4/bYStTw2tD5YxUOvI22mk20ORUhIdHU1YWBi//PILQUFBREdHs2rVKlq1agXA6//dxfm0HLJNVm0WutnGWz/tISXL5PZ4FaU8ynLF8a4QwgYkoO3jaJn/8R2wAXUrS/EWRn8YtR5OrofkfVoSadKt9NedjYMT6yA4FK6/C/TXtt5w9OhRoqKi+PNPbYf7Pffcw5w5c4p0sc0xWdiTmHa5+24BnU6w6VAyd4arjreK9ypLOe4EIURtoDNQF/hDSrm70CEl3spSFLcSApr30z5KIyUsj4I9i8BmBb0P+NeB0Zuvaj6I1Wpl1qxZTJ48mezsbEJCQpg1axbDhg1z2D2uE8LpFhMB+BjU9D7Fu5VpHoeUMgX4Aci1SxpIKX+2+3pWxYWnKC507E/Ys1irxLLmaXs/Mk7Dyonl/lb79u3jxhtv5Pnnnyc7O5sRI0aQkJDA8OHDnbYc8TXq6d+uPkZ90eeEEPS9PuSq/0iK4g7lGeRkBuYIIUbbPyGEWFRxISmKmxz8FcxZRR+zWeDQb2X+FmazmWnTphEeHs7mzZtp3LgxP//8MwsXLix1XsbkoR3p3ioEo17ga9DRqJYfsx/rVqaxtoriSeX5F3oWuB/4QwjRVEr5RqHn2lZoVIriDgEhoPd17MDr77hpz5m4uDhGjRpFfLw2Tqa8rc8DfQ18/K8upGaZyDZZaVTLr9SGiKcvZbNw43GOJWfSvVVdHuwRSk1/tQdEca9yjY6VUh5HG8B0qxBinhDCo6NnFeWahD8GOrv3TsYA6PNiiS/Lzc1l0qRJdO/enfj4eFq2bMnq1auJjo6+qnkZtQJ9aFzbv9SkcTQpk3/N2ciy7YnsOJ7Cgn+O8ugXm8jKs5T7nIpyLcrzi18ASCkvAgOA+sByIUQApQxkUhSvFNQEHl2ttW9HgF8tuPkN6PZksS/ZsGED4eHhvPPOO9hsNsaPH8/u3bvdMi/j89UHyTVZseaXYpksNlKy8vg17rTLz60ohZXnVlVcwSdSylwhxL3AHOAvtDkdilL5NOsFz+4Bq1m7+ijmXX9mZiaTJ09m1qxZWuvzhv7EjGxEn3sbg6971iQOnEnHfqJtrtnGrlOpPNyr5NbtilKRynzFIaUcZfe1TUr5JFo5bsvynlgIMV8IkSSE2FPM8zcLIdKEEPH5H6+V9xyKUmZ6Y7FJY/Xq1XTq1ImZM2ei0wkm3WQkLjKHPjWOwl9vwKIhbgmxVf0aDo/5GnW0c9M4W0UpcM1rFFLKN7mKxAF8CdxeyjHrpJTh+R9vXcU5FOWqpaamEhkZyeDBgzl+/DjhnTuz7Ukfpt1s5nJLKUuOtuHwbLzL43l6UBv8jLrL+c2gFwT6GhjStanLz60ohVXI4raU8sRVvOYf4FJFnF9RKprT1udrlhHRyNmuPT1c2O/ymNo1DiZ6dC8GhDXgugY1uL97M755qg9BpVRVZedZOJuac3ltRFGulbcXjPcWQuwEzgATpZR7nR2UPyNkDEBoaKgbw1OqmuTkZMaOHcuSJUsA6N27NzExMbRv3x6sFjD4alcZhdks0Mg9szTaNKzJtIfL1g7OapN88vs+lu84jRDgb9Qz+d6O9Gtb38VRKlWdN5fT7gCaSyk7A7OAZcUdKKWcK6XsJqXsVtqmK0VxRkrJwoULad++PUuWLCEgIIBPP/2UdevWaUkDQG+A2z/VSnYLCgmNgdDhIQjxvq1M3204xi9xpzFZbOSZbaRmm5ny/U5OXcwq/cWKUgKvveKQUqYX+vw3IcTnQogQKaXrhyso1UpJrc8dhD8GddrAts8hLx1uGAlhD5V+EpsN0k9pJb9+wRX8J3Duh60nybUbZ2u1Sn7feYYxA9q4JQalavLaxCGEaAicl1JKIUQPtKujix4OS6lCpJTMmzePiRMnkp6eTlBQEB999BGRkZElb8YL7aN9lNXRP+HHf0FuKkgbdBwG90SDwefa/xAlMFkcZ6BbbZIck9Wl51WqPo8ljvz+VjcDIUKIROB1wAggpfwCeBB4WghhAXKA4VJKtbqnVIiytD6vEBnnYNE9RUfa7v0eAurBbR9W7LnsDOzQkOU7EjFbr/zY+Bp1DOxQ/s6/ilKYxxKHlHJEKc/PBma7KRylmnDW+nzmzJnFdrG9ZnuXalcZhVlyYMc8lyeOZwZdz74zaRxLykKnA7NF8q++LenYrPxtURSlMK+9VaUoFW3fvn1ERkayadMmAIYPH87MmTNL7WJ7TSw52qwPe/aNFV0g0M9ATFQv9p1J53xaLh2bBlMvyK/Y46WUbD58gd/iz2DQ6xjatSnhzcvW8FGpXlTiUKo8s9nM+++/z1tvvYXJZKJRo0Z88cUXDBnihh3fbYfCX2+CzXzlMZ0R2rpnt7kQgrAmwYQ1KX1Bfs7qQyzdcpJcsxUBrE04x7ODr+ehnqqdiVKUN5fjKso1i4uLo0ePHkyZMgWTyURkZCQJCQnuSRoA9drBoHe19u2+Qdo89JC2cOdn7jl/GV3MzGPx5hPkmrWrI4nWB+uzVYfIVYvpih11xaFUSbm5ubz11lu8//77WK1WWrRoQXR0NIMGDXJ/ML3GQacRcHID1GgATXsV2xfrMosJ9i+D5L3QoDO0veeaZ6GX5PC5DHz0OodKLJ0OElOyad2gpsvOrVQ+KnEoVc7GjRuJjIxk//79CCEYP348b7/9NjVqODYJdJvAetD+3rIdm5sO83pp+z5MmdpVSp3WMGoD+AS4JLymdQIwWR3Ldy1WSYMS1kWU6kndqlKqjMzMTMaPH8+NN97I/v37adu2LevXr+fTTz8tNmnkmqxO9zt41KaPIeWoljRA+++FAxA7x2WnbFIngL7X18PXeOVXgp9Rx71dm6oJg4oDdcWhVAmrV68mKiqK48ePo9fr+fe//82rr76Kn5/zd8vn03J4/b+72X0qFQH0a1efKUM7EujnBT8SB1Y4Vl1ZcuDAcujzgstOO/XBG1iy+QQr4k5j0Ol4sEczhpbQeVdKycFzGaTnmOnYNFjNSq9G1P9ppVJLTU1l4sSJxMTEABAeHs78+fOJiCi+6aDNJnlmwTbOpuZQ0DB2/YEkpvywk0/+1dUdYZcsuBmc21H0MaGDYNdWNxn0Okb2bcnIvqVPSbiUmce4r2M5fSkHnU5gtUleu68jA9TmwmpB3apSKq3ly5fToUMHYmJirrQ+37q1xKQBsCcxlZQsE4W7jJutktijl0jJMrk46jK48eX8RoqFGPxcerVRXm8v28vx5CxyzFay8izkmq28+eNuLma4fn+K4nkqcSiVTnJyMiNGjGDo0KGcOXOG3r17Ex8fz6RJkzAaS78fn5lrcVrUpNNpsys8rlkvGPYj1AvTyngb3ACP/AINO3s6MgAsVhtbjlzAYjffQwhYdyDJQ1Ep7qRuVSmVhpSSxYsXM27cOC5cuEBAQADTp0/nueeeQ6/Xl/n7dG5e2+GXHkCtAB8a1/avyJCvXuvboLXT8TPF2xEDf0+F7GQI7Qd3zoK6Fd8FVwiBs2JigcCgV+9FqwP1f1mpFE6fPs2QIUN45JFHuHDhAgMHDmT37t2MHz++XEkDINDXwOv3dcLXoMPfR0+Aj55AXz3THu7smn5V7rAjBn4fB2kntIaKR1ZqJb25aRV+Kr1OcEtYA4z6on9XEujfTg2Jqg7UFYfi1a669XkpBnRoSESLOmw6lIzRoKNvm3oE+Jb845CUlkv0X4eJO36JJrUDiBrQmo5NvaRh4N9vFe3AiwRLLuxeBN2fqvDTvXxPB9JzzMSdSEGvE/gadEx7uHOJY2wtVhtSgtGg3q9WdipxKF7L1a3Pawf6cGd42b5XWraJR7/YSEauGasNEi/lEH8yhZmPdqNzqBc0AsxKdnzMnA3piS45XaCfgRmPdiM5PZeMXAvNQwLR65wn8owcM9N/3su6A0lIoMd1dXn13o7UqeHrktgU11OpX/E6VquVTz/9lE6dOvHnn38SEhLCwoUL+fnnnyt+XkYZ/bw9kRyTlcKbq/PMNr5Yfcgj8TgIvRHsVx6MgdBygEtPWy/Ij1b1axSbNAD+vTiO9QeTsNgkVptk25GLjP9mO2q8TuWlEofiVfbt20e/fv14/vnnyc7OZvjw4SQkJDBixAiPrj8cTcokz8kO85PeMr/7ztnaWNqCMl5jILS5E1re4tGwzqXmsCcxrcgwKYtNcupiNkeSMj0YmXIt1K0qxSt4tPV5GXQOrc1f+84XmeEtBGVqV+4WIdfD+KOwe6F2e6rVQO1qo7Rkm5sG+34CcxZcfzfUqthNhhm5Zgw6gf3uGL1OkJ5jdvoaxfupxKF4XFxcHKNGjSI+Ph6AyMhIPvzwQ2rV8pKFZ+COzo1ZvPkE51JzyLPYMOgFvgY9zw6+3tOhXeFfC3o8U/bjE7fC14O0CYXSBisnwu2fQrcnKyyklvVqaIvhdq3ZbVJ6T9JVyk146j6jEGI+cDeQJKXs6OR5AcwA7gSygcellDvsj7PXrVs3GRsbW9HhKi7gVa3PyyDHZGH59tNsPXqRlvUCeahnKA2CS973setkCos2nSA1y8Sgjg0Z0qWpd1QVSQkzroPUY0UfN/jB8ye1br4VZPuxi0z8Lg4htJJdm03y9sOd6ddWle56EyHEdilltzId68HE0R/IBL4uJnHcCYxFSxw9gRlSyp6lfV+VOCoH+9bn48aN83zr8wq2Zs9Zpi7bQ57ZhkTrNtupWS1mPtrN8/tFMs7CjFZayW5hPjVhaAx0eKhCT5eeY2b9gSRsEvpeX4/agT5Oj1u56yyfrz7IhYw8rmtQg4l3hdFJzUh3i/IkDo+99ZFS/gNcKuGQoWhJRUopNwO1hBCN3BOd4ipX0/q8MpJS8vHv+8nNTxqgTdTbk5jGrlOpHo0N0GZ8FPemMSCkwk8X5G/kzvAm3B3RpNikseFgMtOX7+FcWi4Wm+TA2QzGfRXL6UvZTo9XPMcLrpmL1QQ4VejrxPzHlEpq9erVdOrUiZkzZ6LT6Zg0aRLx8fH06dPH06FVuDyLzWnDRJtNcuhchgcisuNbE8Ie0G5NFRB6CKgLzW/ySEjz/z5SpPgAwGy18d9tJz0Sj1I8b04czq7lnb5FEkKMEULECiFik5OdbIRSPCo1NZXRo0czePBgjh8/Tnh4ONu2bWPatGnFzsuo7HwNOoIDHN9Z63SCVvW95MpqSAx0fkxrpCj0WhXWE+u0bo+lMedo420r0KVMx866FpvkfJrquOttvDlxJALNCn3dFDjj7EAp5VwpZTcpZbd69SpuUU+5dlfb+ryyE0Iw/ra2+BWaqOdr0NGmYU0imnvBTnMAox/c8wVMyYFX8+DRlRBc/OAmAFJPwvz+8E4QvFMTvh8OeRWzH6N3m3oY7DYS+hn19Gunfqa9jTeX4y4HnhNCLEZbHE+TUp71cExKGSUnJzNu3DgWL14MQO/evYmJiaF9+/Yejsx9bu/cmJCavny34Tip2VpV1YM9QktcGD99KZt5fx1hz6lUWtWvwehbWtOmYU3XBiqEdsVRGpsNvrwJ0k6BzC+v3b9Mm0444udrDiPqltZsOpRMWraZHJMVPx89HZoEM6iY4VAmi41cs5WafgbPFxtUM56sqloE3AyEAOeB1wEjgJTyi/xy3NnA7WjluE9IKUstl1JVVZ5VUa3Pq6Ok9Fwe+WwD2XkWbFL7fe5r0BM9uqfrk0dZHP8HFt4NJrs1Gr0vvHAGAupc8ylMFht/7TtP4sVsOjQNpnuruujsrkIsVhsz/3eAZdsTsUlJw2A/Xr//BlV9dY3KU1XlsSsOKeWIUp6XwLNuCkepAKdPn+bpp59mxYoVAAwYMIDo6GhatWrl4cgqh6WbT5Bntl6eTCgl5FmszP/rCO8MD/dscAC5qc53ogudlkwqIHH4GHTc2qnk4smYv46wfEcipvwWMImXchj3dSw/TuhfbMWWUrG8eY1DqSQKWp+HhYWxYsUKgoKCiI6OZvXq1SpplMOhcxlFejqBljyOJHlBFRZA8/5gddImJLABBIe6LYwftp50qL6yScmaPefcFkN1pxKHck2OHj3K4MGDiYqKIj09nXvuuYeEhARGjx6t7juXU0SL2vjY7SrXC7gh1EtuwfjX0jYHGvy1Joo+NcE3GB5eWnpPrAqUZ3ZsNmmxSrK8YexvNeHNi+OKF7NarcyePZtJkyaRnZ1NSEgIM2fOZPjw4SphXKUHuofyU2wiqVkm8iw2jHqBv4+ByJtbl/g6KSUpWSYCfQ34Gl28jtRpBLQcCId+A6O/1hjRJ9C157TTs3VdNh5KLtLi3qAT9G2rqq/cxWOL466iFsddb9++fURGRrJp0yYAhg8fzsyZM1Gl0NcuI8fMj9tOEX8yhesb1uShns0JqVn8wKNtRy8y9afdpGSZ0Ql4oEcozw2+3mFBuSq5kJFH1LwtpGWbkIDVJnmifyueuOk6h2P3n0ln/5k0mtUNpEuL2upNTQkqRa8qV1GJw3XMZjMffPABb775ple2Pq9uzqXmMHz2+iL3+/2MOiJvuo7/169qry1ZbZJtRy9yKTOPiBZ1aFTL3+H5V7/fycZD2oZgIQQtQgL57PHupY4Irq4qRa8qpXKJi4ujR48eTJ48GZPJRGRkJAkJCSppeNDvO89gtRV945drtrFkS9Vv0aHXCXq1DuHO8CYOSQPgz73n2HToArlmG7lmGzkmK0eSMvl63VEPRFv1qMShlCg3N5fJkyfTvXt34uPjadGiBatWrWLevHleNS+jOsrOs2KxOt4xyDNbnRxdvazZe44cu78Hk8XGmoTzHoqoalGJQynWxo0biYiIYPr06dhsNsaNG8fu3bu9dl5GdXNTWH2HxXCDTnBTezXnIjjAB2fLPEF+RvcHUwWpxKE4yMrKcmh9vm7dOmbMmFGlWp9Xdh2b1mJYr1B8DDr8ffQE+OhpVjeAsbe2LfY1WbkWFm08zuSl8Xyz/miVHd/6YI9mDgOz/Iw6Rt7YwjMBVTFqcVwpYvXq1URFRXH8+HH0ej0vvfQSr732WpXtYlsVnEnJYdepFOoH+RHRvPjKobRsE49+sYm0bBO5Zhu+Bh01/Ax8/XQf6tYovnKrslp3IIn3VyRwKctEgI+eMQNa81DPojPVl8WeIuavI6Rmm+jQtBYv3tWe6xp4QXsXD1BVVSpxlFtqaioTJ04kJiYGgPDwcGJiYujSpYuHI1MqSvSfh/lmw7HLrTpAu7X1UM9Qxt/ezoORuY6UkmyTFX+j3qFE+ZcdiXz4277LVWkCCPQ18MP4ftSqhq1LVFWVUi72rc/ffvtttm7dqpJGFRN77GKRpAHavIvtx0oaxFm5CSEI9DU43dcy/5+jRUqZJdrgqN93Op3eoBSiCpqrMfvW57169SImJoawsDAPR6a4Qst6NdiTmFpkx7VOQIt67t357S1SnUxozLPYSM5Qg6NKo644qiEpJYsWLSIsLIzFixcTEBDAJ598wvr161XSqMJG9m2Bj0FfZLSmj0HP4/0dd1wXyMgx88euM/y+80yVW0jv1qqOQ+WVv4+enq3reiagSkRdcVQzqvV59dWsbiDzRvdkzppDHDybznUNavL0wDbFjrKNPXqRFxfGXe5f+J6UvDs8gl6tQ9wYtetMuL09u0+lkWuykmu24mfU06dNCD1aXUkcR85nEPP3EY4lZdI5tDajbrqO+sGqUEQtjlcTUkpiYmKYOHEiaWlpBAUF8dFHHxEZGan69ygOLFYbd37wl8NVRqCvgd9fusWhi29llZ1nYc3ecySl5xLRok6RqrRD5zKImreFPIsVKbXd6jV8DSx8rm+VrEKrFIOcFPc5duwYUVFRrFmzBoC7776bOXPm0LRpKfOllWrr8PlMLFbH9uUg2X8mjRtCvWRu+jUK8DVwTxfnPwfz1h6+nDRA63+VY7by360nGTOgjRuj9D5V422D4pTVamXGjBl07NiRNWvWULduXRYuXMjy5ctV0lBKVMPP4NAHC7RfnjWrye7rI0kZ2N+QMVlsHDjrJYO1PMijiUMIcbsQ4oAQ4rAQ4mUnzz8uhEgWQsTnf4z2RJyV0b59++jXrx8TJkwgOzub4cOHk5CQwIgRI9StKaVUTesEcH2jIAz6K/9WDDpB85BAWhazJpKeY+bn7Yks2XSCxEvZ7grVZcKaBDssnvsadHT2lsFaHuSxW1VCCD3wGTAYSAS2CSGWSykT7A5dIqV8zu0BVlKq9blSUT58JIKpP+1h0+ELgFaF9Np9nZweu/tUKuO/jsUmtTGun68+yNhbr+dBu53alUnULa3ZePACuRatmaSPQUdwgA/3dWsGaOsjc9ceZs2ec/ga9QzrFcqDPUKrxRszT65x9AAOSymPAgghFgNDAfvEoZRRXFwco0aNIj4+HoDIyEg+/PBD1cVWuSrBAT58OLLL5W67xU0XlFLy2g+7yDYV7UY7c+VBbunQsNIuJDerG8h3z/Zh0aYTHD6XQUSLOjzYoxk1/Y1IKRn7VSwHz2Vgzl8L+mzVQZLS83h28PUejtz1PJk4mgCnCn2dCPR0ctwDQoj+wEHgeSnlKSfHVGu5ublMnTqV9957D6vVSosWLYiOjlZdbJUKUdo42ouZJi5mOm6aM+gEccdTGNSxoatCc7kGwf5McNKOJeF0GkeTMi8nDdBmoSzdfILIm6/Dz9UjfD3Mk2sczq7n7FfjVgAtpJQ3AKuBr5x+IyHGCCFihRCxycnJFRymd9u0aZNqfa54VICP3mERuUDtwKq5kH4mNYfi7khVtY2SzngycSQCzQp93RQo0iRGSnlRSlnwViYa6OrsG0kp50opu0kpu1WXuddZWVlMmDCBvn37qtbnikcF+BoY3LEhvoX2dugF1A70IaJ5HYfjs3ItzF55gAdnrGN09Gb+2Z/kznArRIcmtbA4qTrz9zFcvjWXkWNmx/FLnK4ChQL2PHmrahvQRgjREjgNDAceKXyAEKKRlPJs/pdDgH3uDdE7rVmzhqioKI4dO6Zanyte4eUhHQj0NbA8LhGzRdKzdV1eGdLBobmg1SaJitnCqYtZmK2SxEvw2g87+b872jOka+UpEW9c258Hujfjp9hEcs1W9Dow6HVMGtoBvU6wdPMJPlt1EINeh8Vqo2vLOrwzLLzU236VhUd3jgsh7gQ+BfTAfCnlNCHEW0CslHK5EOIdtIRhAS4BT0sp95f0PavyzvHU1FRefPFF5s2bB0Dnzp2ZP3++6mKreBUpZbGVRRsPJjPl+50OC+m1A334/aVb3BFehZFSsuP4JVbtPpe/kbAJLevVYP+ZNJ6cv5W8Qp13fQw6hvdqzjNevHBeaXaOSyl/A36ze+y1Qp+/Arzi7ri80YoVK3jqqac4c+YMPj4+vPbaa7z00ksYjVXzHrJSeZVUjnrqYnaRBeUCqVkmLFYbBn3l2ZMshKBry7p0bVm0KeL/dp91aF9vstj4Nf60VyeO8lAtR7xccnIy48ePZ9GiRYBqfa5Ubu2aBGHQ6TBbi15xNK7t7zRpnEvN4a995xFCcEtYA+oHef/tWB0CgWOlj64K7e9QicNLSSlZsmQJY8eO5cKFCwQEBDBt2jTGjh2LXl817pMq1c8NzWrRpWVtdhxLIcdsRSe02zgv3e34Rmj1nrNM/WkPUkoQgs9XHWTqQ53p366+ByIvu9s7N+aHrSfJK3TV4WvQMbRrU44nZ/LBr/vYdTKFIH8jj/VrxUM9K9+mQdUd1wudPn2aZ555huXLlwOq9blStVisNtbsPcfahPPUqeHLgz1CHVq755qs3PH+WnLMRa9MAn0N/PHSLRi9vDvvL3Gn+ei371O0oAAAEShJREFUfegEmK2Sm9vX5//uaMdDM9eTmWu5fDXiZ9Tz3OA2XrHDvtKscShFOWt9/uGHHzJ69OhK945EUYpj0Ou47YbG3HZD42KP2X823em4VyklR5IyaNc42JUhXrO7I5owqGNDjidnUS/Il7o1fPlp2ynMVlnkFlau2cqX6455ReIoD5U4vIRqfa4oV9QJ9HHa1t1ik9QK8CnymJSSnSdT2XUyhYa1/LmpXX2vKHv1M+pp1zjo8tcXM/Mut28prGDDYMHdn8rwJlElDg+zWq3Mnj2bSZMmkZ2dTd26dZk5c6bqYqtUa6EhgbRrHETC6TTMVu0Xqo9eR3jz2jSs5X/5OJtNMvn7nWw+dAGT1YqPQc/slQeYP6Y3ITW9q0dWt1Z1+XbDcXILJQ8hoFOzWrz1025W7T6HTUr6ta3Hy/d0oFagTwnfzbO8+0ZhFbdv3z769+9/ufX5sGHDSEhI4JFHHlFJQ6n2PhrZhUEdGuJj0OFr0HHrDY14d1h4kWM2Hkpm8+EL5JitWG2QY7JyMTOPWSsPeCjq4nUOrcWADg3wM+oQAvyNeoL8tIaJq3efw2y1YbVJ1h9MZvw3sXjz+rO64vAAZ63P58yZw9ChQz0dmqJ4jRp+Rl5/4AZef6D4YzYevECO3WZCqw0257eC9yZCCF69tyNDuzZl+7FL1K3hS0Tz2vzr842YCt2Ws1glJy9kc/h8Bm0aBpXwHT1HJQ43i4uLIzIykri4OABGjRrFRx99pFqfK8pVCKnpi1Gvc9hUaL8Okp5jZt5fh1m3P5k6NXx4vH8r+rV1f1mvEILOobXpnD9692hSJnq9ALulD51OsDcxjYTT6TSp7U+XFnWcFgt4ikocbuKs9fncuXMZPHiwp0NTlErr7i5N+GbDMQqvOfsZdTzR/0rpusVqIzJ6M+dSczBbJWdTc3j1+528eFcYd0U08UDUVzQPCcTXoHO4asoxWfj4933ohA6dgCa1A/hiVA8C/bzjV7Za43AD+9bnY8eOZffu3SppKMo1qh/kx+ePd6d94yB0AurW8GHC7e24vfOVUt/1B5O5mJF3eZEdtNkZc9Yc8kTIReh1grce7IyfUYefUVvLMeoFeiEwWSS5ZivZJivHL2QS/ddhT4d7mXekryoqKyuLyZMnM3PmTKSUtG3blpiYGPr27evp0BSlymjfJJgFT/Yu9vnEi9lFdnEXuJiRV6QhY1r2/2/v3oOsrO87jr8/7F2W6wKC3JaLRo2Rq4gTNUyKDLEWNKEB06ReEAyOWFt7CWnSVONsYso4KY0ZEcXYtKkyXlJitU4NXpqq3FFZQEQWYUWR63Lb29nz7R/PA+6e3cXzLLvnObDf18zOnHOe39nz4bc8z/c8v+d5fk8dL73zMXuqapgwooQJI0oycpLKhBElPPeXX+HVTXtIJJOsqzjIK5v3NGlT32D8vvwTvj5+MP17FpEf8wWQXjg6iE997lx2uGhgD/JbGA4q7dv1ZGGo2HuUOY+upL4hSW19kmfX7GLiyD6UfXNURopHr6753HBZcHuijw5Wk9MlOMjf2L7Dtdy0+E0E3P21C5k2Nr5rvHyoqp1VVVUxZ84cJk+eTEVFBaNGjWLVqlWUlZV50XAuBmNLezF6SC+KwosCc7oEx0H+ptH8WAv/azPHahInp0Kvrmvgrff3sbbiABAcJ/ndukrmP7GGHyx7m3d2HuywvNePG0ReCxM+WpjreF0DD76wmY2Vhzosw+fxPY525FOfO5d9JPFP3xrDik17eHXTHvp0L2DGZUMY0qfryTYbdx1qNpttdX0D63YcYPzwEv7uyQ2srdhPTX0SAX/Y+infn3YJUy4dwLGaBM+u2cm6HQcZ0a+Yb14+lH492v4lsbRvMT+ZOZqfLt/E/qO1NCStWbba+iRLVmzjhzd8KZYLHX2Sw3bgU587d2ab/uBr7KmqafJaYV4X7p56IV8Y0J15j69ucsU3BMNLy+66kpsffpN9R2qpTSTJzRGFuTksvX0i/boX8syqXby2ZQ99uxXwZ18exsUD059jy8w4VpvglsVvsauF28/mdAkOos+6on1uEOWTHGZI6tTnRUVFlJWV+dTnzp1hZn9lBA++uJmacKhKgoLcHK65ZAAvl3/S4nuOVNfz7KqdJ4sGBBfvHUsmWPzy+3xcVc0He45Smwj2Uv5v617KZo6mLpHk0Ve2sf9oHeOH9+bOay7g3B5FHKmup7q+gb7dCpCEJIoL87h29Hn86vXtzQ7wNySNBoxlK3cyblhvLh/Zp0P7qDEvHG20e/du5s2b51OfO3cWmDZuEF0ES1/fzqFjdYwe2pt7rr2QroW5DOvblZaOj59TkMumj6qabdDNYO2OA9QmkieXGcEpwD9+7l2q6xpOFqjfb/yENdsPcMmgHry1bR+S6NutgHu/8SX2HK6lcv9xLjyvO2NKe7F+x0HqEslmw1Y19Q3c99y7/OzGMXxxUGYuJPahqojMjKVLl3LPPff41OfOdQJmxh2Pr25SJE4MY+0/UssTf6hodqvYwSXnsPvAcRrS2LzmCJBoSH7WWEBhfg619cHEjd0KczlSXU9tC4XjhC6Cn904hivbeEV8lKGqWM+qkjRV0nuStkn6XgvLCyQ9FS5fKak08yk/U1FRwZQpU7jtttuoqqriuuuuo7y8nDlz5njRcO4sJYmff2ccc786ki8M6MZlw3vzk5mjuX78YG64bDBFeTnBxp9wg5/Xha+PH0x+mlO7NxhNigZ8dgZV0oI9ir1Haqk5RdEASBr89W/W88zqnW36d0YR2x6HpBxgK3ANUAmsBm40s02N2twBXGpm35U0C7jBzGae6vd2xB5HQ0MDDz30EAsWLPCpz51zTXxyqJrHXv2ADR8epLRvV2ZPGsn5/btxy+I3+XDfsZPHOAryujCgZxEVe491aB4Br/1wMvm50Y6znikHxycA28xsO4CkJ4HpwKZGbaYD/xg+fhr4hSRZBqvdli1bmD17Nm+88QYAM2fOZNGiRfTrl933PXbOZUb/nkX8/fWXNHt98ewJLHtrZ3hWVSHfvnIYhXk53P7YShJJoy6RpCg/h5wu4lij28meLiOYNXjSxee2029sLs7CMRDY1eh5JXB5a23MLCGpCigBmsyZLGkuMBdgyJAh7RKuvr6ehQsXcu+991JbW+tTnzvnIinKz+Wmq4dz09VNT5hZdtdVLF9bycdV1Vwxsg8XDOjOnb9aHdwJUFBXn0Thvcrbqndxx94EKs7C0dIYT2pPpdMGM3sEeASCoarTDbZhwwZuvfXWJlOfL1y4kF69ep3ur3bOdXJ9uhVw66QRTV575u6r2fDhAQ5XJxg3rDdvbN3LL19+n31HaigpLuDQ8ToakkYyja1bUX4Olw7p2G1VnIWjEhjc6PkgYHcrbSol5QI9gAMdFaimpob777+fBx54gEQiwdChQ1myZInPYuuc61A5XcS4YSUnn08ddV6TGX63f3qUFeWfUF2XYNPuw2zceYgkzQ+qFxfm8vjciR2eN87CsRo4X9Iw4CNgFvCtlDbLgZuAN4EZwIqOOr5RXl7OjBkz2LJlC5KYP38+ZWVlFBcXd8THOedc2ob3K2Z4v5HNXj9WmwAz9h+tpbgwj97FmZl+JLbCER6zuBN4CcgBlppZuaT7gDVmthx4DPi1pG0EexqzOipPv3792Lt3r0997pw7Y3QtCDbhXQszOx+eXwDYyPr167nooot8FlvnXKdzppyOm3XGjBkTdwTnnMt6fj8O55xzkXjhcM45F4kXDuecc5F44XDOOReJFw7nnHOReOFwzjkXiRcO55xzkZx1FwBK2gt8eBq/og8ps+9mkWzOBtmdL5uzQXbn82xtl835UrMNNbO+6bzxrCscp0vSmnSvnsy0bM4G2Z0vm7NBdufzbG2XzflOJ5sPVTnnnIvEC4dzzrlIvHA090jcAU4hm7NBdufL5myQ3fk8W9tlc742Z/NjHM455yLxPQ7nnHOReOFwzjkXSactHJKmSnpP0jZJ32theYGkp8LlKyWVZlG2myXtlbQh/Lktg9mWSvpU0sZWlkvSojD7O5LGZlG2SZKqGvXbP2Qw22BJr0jaLKlc0l+00CbOvksnXyz9J6lQ0ipJb4fZ7m2hTZzrazr5Yltnw8/PkbRe0vMtLIved2bW6X4IblX7ATAcyAfeBi5OaXMH8HD4eBbwVBZluxn4RUx9dzUwFtjYyvJrgRcBAROBlVmUbRLwfEz9NgAYGz7uBmxt4e8aZ9+lky+W/gv7ozh8nAesBCamtIllfY2QL7Z1Nvz8vwJ+09Lfry1911n3OCYA28xsu5nVAU8C01PaTAeeCB8/DfyRJGVJttiY2esE939vzXTgXy3wFtBT0oAsyRYbM/vYzNaFj48Am4GBKc3i7Lt08sUi7I+j4dO88Cf1rJ641td088VG0iDgj4FHW2kSue86a+EYCOxq9LyS5ivJyTZmlgCqgJIsyQbwjXA442lJgzOQK13p5o/LFeGQwouSvhhHgHAoYAzBN9PGsqLvTpEPYuq/cKhlA/Ap8D9m1mrfZXh9TTcfxLfO/hz4WyDZyvLIfddZC0dL1TT1G0I6bTpCOp/7O6DUzC4FXuazbwvZIK5+S8c6gvl4RgH/Avw20wEkFQPPAHeb2eHUxS28JaN99zn5Yus/M2sws9HAIGCCpEtSmsTad2nki2WdlXQd8KmZrT1VsxZeO2XfddbCUQk0rviDgN2ttZGUC/QgM8Mgn5vNzPabWW34dAkwLgO50pVO38bCzA6fGFIwsxeAPEl9MvX5kvIINsr/bmbPttAk1r77vHxx91/4uYeAV4GpKYviWl+baC1fjOvsl4FpknYQDHt/VdK/pbSJ3HedtXCsBs6XNExSPsEBoeUpbZYDN4WPZwArLDx6FHe2lHHvaQTj0dliOfDn4RlCE4EqM/s47lAAkvqfGLuVNIHg///+DH22gMeAzWb2YCvNYuu7dPLF1X+S+krqGT4uAiYDW1KaxbW+ppUvrnXWzBaY2SAzKyXYlqwws2+nNIvcd7ntnvQMYGYJSXcCLxGcxbTUzMol3QesMbPlBCvRryVtI6i+s7Io212SpgGJMNvNmcgGIOk/CM6u6SOpEvgRwcFAzOxh4AWCs4O2AceBW7Io2wxgnqQEUA3MytTGheCb33eAd8OxcIDvA0Ma5Yut79LMF1f/DQCekJRDUKyWmdnz2bC+RsgX2zrbktPtO59yxDnnXCSddajKOedcG3nhcM45F4kXDuecc5F44XDOOReJFw7nnHOReOFwzjkXiRcO5zJE0j9LOkfS9ZKWSPpPSVPCZeMk3R53RufS4YXDuQyQ1JtgItXjZvZbM5tDcBHYTIIFa4GrYozoXNo65ZXjznUUSY8TzCx7Qn+C+6rMADalNP8B8FCj5zWSzjWzPR2b0rnT44XDuXZkZienCZE0DPhfYC7QGzgUvi7gp8CLJ+6BEToIdAe8cLis5kNVznUASSXAfwM/DucD2gqUhovnE0yEN0PSdxu9bSCwM5M5nWsL3+Nwrp2FM6Q+TzDZ3eLw5XcJbtGJmS0CFqW8pxg43Gjqbeeylk9y6Fw7CmdIfQ7Y33jYKlx2FbDWzI638L4LgAYz+yAzSZ1rOy8czrUjSYsJpiL/k/A2nM6ddfwYh3PtRNKPCO7s9qepRUPScEmPSXo6nnTOtR/f43CuHUgqBSqAHUBVo0XvmdnMRu2eNrMZGQ3nXDvzg+POtQMz2wEo7hzOZYIPVTnnnIvEC4dzGSCpRNLDwBhJC+LO49zp8GMczjnnIvE9Duecc5F44XDOOReJFw7nnHOReOFwzjkXiRcO55xzkXjhcM45F4kXDuecc5F44XDOOReJFw7nnHOR/D/UoJcf8D3rzQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W3 = W3.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b3 + W3[0]*z1_min) / W3[1]\n",
    "z2 = -(b3 + W3[0]*z1_max) / W3[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(2)}_1$')\n",
    "plt.ylabel(r'$Z^{(2)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h2, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model H1: many hidden units"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This time we observe the effect of a hidden layer with many neurons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h1_many():\n",
    "    # create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add a hidden layer with 75 units\n",
    "    model.add(Dense(75, input_dim=2, kernel_initializer='normal', activation='relu')) \n",
    "    # And again, a single output node\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid')) \n",
    "\n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "100/100 [==============================] - 2s 16ms/step - loss: 0.6596 - accuracy: 0.8000\n",
      "Epoch 2/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5443 - accuracy: 0.8000\n",
      "Epoch 3/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4229 - accuracy: 0.8300\n",
      "Epoch 4/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3538 - accuracy: 0.8400\n",
      "Epoch 5/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.3184 - accuracy: 0.8500\n",
      "Epoch 6/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.3010 - accuracy: 0.8500\n",
      "Epoch 7/300\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2887 - accuracy: 0.8600\n",
      "Epoch 8/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2781 - accuracy: 0.8700\n",
      "Epoch 9/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2726 - accuracy: 0.8700\n",
      "Epoch 10/300\n",
      "100/100 [==============================] - 1s 15ms/step - loss: 0.2655 - accuracy: 0.8700\n",
      "Epoch 11/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2595 - accuracy: 0.8800\n",
      "Epoch 12/300\n",
      "100/100 [==============================] - 2s 18ms/step - loss: 0.2566 - accuracy: 0.8700\n",
      "Epoch 13/300\n",
      "100/100 [==============================] - 2s 24ms/step - loss: 0.2527 - accuracy: 0.8800 0s - loss: 0.2528 \n",
      "Epoch 14/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2494 - accuracy: 0.8900\n",
      "Epoch 15/300\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2469 - accuracy: 0.8900\n",
      "Epoch 16/300\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2430 - accuracy: 0.8800\n",
      "Epoch 17/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2430 - accuracy: 0.8700\n",
      "Epoch 18/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2423 - accuracy: 0.8800\n",
      "Epoch 19/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2436 - accuracy: 0.8700\n",
      "Epoch 20/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2371 - accuracy: 0.8900\n",
      "Epoch 21/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2356 - accuracy: 0.8800\n",
      "Epoch 22/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2337 - accuracy: 0.8700\n",
      "Epoch 23/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2340 - accuracy: 0.8700\n",
      "Epoch 24/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2292 - accuracy: 0.8900\n",
      "Epoch 25/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2309 - accuracy: 0.8800\n",
      "Epoch 26/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2316 - accuracy: 0.8800\n",
      "Epoch 27/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2353 - accuracy: 0.8900\n",
      "Epoch 28/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2311 - accuracy: 0.8800\n",
      "Epoch 29/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2265 - accuracy: 0.8700\n",
      "Epoch 30/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2255 - accuracy: 0.8800\n",
      "Epoch 31/300\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2265 - accuracy: 0.8800\n",
      "Epoch 32/300\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2269 - accuracy: 0.8800\n",
      "Epoch 33/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2266 - accuracy: 0.8800\n",
      "Epoch 34/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2274 - accuracy: 0.8600\n",
      "Epoch 35/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2237 - accuracy: 0.8800\n",
      "Epoch 36/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8900\n",
      "Epoch 37/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2239 - accuracy: 0.8900\n",
      "Epoch 38/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2261 - accuracy: 0.8800\n",
      "Epoch 39/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2253 - accuracy: 0.8900\n",
      "Epoch 40/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2291 - accuracy: 0.8900\n",
      "Epoch 41/300\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2225 - accuracy: 0.8900\n",
      "Epoch 42/300\n",
      "100/100 [==============================] - 224s 2s/step - loss: 0.2316 - accuracy: 0.8900\n",
      "Epoch 43/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2227 - accuracy: 0.8900\n",
      "Epoch 44/300\n",
      "100/100 [==============================] - 3s 26ms/step - loss: 0.2242 - accuracy: 0.8800\n",
      "Epoch 45/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2237 - accuracy: 0.8900\n",
      "Epoch 46/300\n",
      "100/100 [==============================] - 2s 17ms/step - loss: 0.2222 - accuracy: 0.8900\n",
      "Epoch 47/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2259 - accuracy: 0.8700\n",
      "Epoch 48/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2240 - accuracy: 0.8900\n",
      "Epoch 49/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2222 - accuracy: 0.8900\n",
      "Epoch 50/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2224 - accuracy: 0.8800\n",
      "Epoch 51/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2243 - accuracy: 0.8700\n",
      "Epoch 52/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2233 - accuracy: 0.8800\n",
      "Epoch 53/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2239 - accuracy: 0.8700\n",
      "Epoch 54/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2217 - accuracy: 0.8900\n",
      "Epoch 55/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2229 - accuracy: 0.8900\n",
      "Epoch 56/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2233 - accuracy: 0.8800\n",
      "Epoch 57/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2297 - accuracy: 0.8600\n",
      "Epoch 58/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2222 - accuracy: 0.8900\n",
      "Epoch 59/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2243 - accuracy: 0.8900\n",
      "Epoch 60/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2219 - accuracy: 0.8800\n",
      "Epoch 61/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2246 - accuracy: 0.8800\n",
      "Epoch 62/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2198 - accuracy: 0.8800\n",
      "Epoch 63/300\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.2274 - accuracy: 0.8900\n",
      "Epoch 64/300\n",
      "100/100 [==============================] - 2s 18ms/step - loss: 0.2196 - accuracy: 0.8900\n",
      "Epoch 65/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2257 - accuracy: 0.9000\n",
      "Epoch 66/300\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2242 - accuracy: 0.8900\n",
      "Epoch 67/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2195 - accuracy: 0.8900\n",
      "Epoch 68/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2214 - accuracy: 0.8800\n",
      "Epoch 69/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2206 - accuracy: 0.8800\n",
      "Epoch 70/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2235 - accuracy: 0.8900\n",
      "Epoch 71/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2200 - accuracy: 0.8900\n",
      "Epoch 72/300\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.2224 - accuracy: 0.8800 0s - loss: 0.1919 - \n",
      "Epoch 73/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2187 - accuracy: 0.8900\n",
      "Epoch 74/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2214 - accuracy: 0.8800\n",
      "Epoch 75/300\n",
      "100/100 [==============================] - 1s 15ms/step - loss: 0.2186 - accuracy: 0.8900\n",
      "Epoch 76/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2290 - accuracy: 0.8900\n",
      "Epoch 77/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2209 - accuracy: 0.8900\n",
      "Epoch 78/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2188 - accuracy: 0.8900\n",
      "Epoch 79/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2164 - accuracy: 0.8900\n",
      "Epoch 80/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2184 - accuracy: 0.8900\n",
      "Epoch 81/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2171 - accuracy: 0.8900\n",
      "Epoch 82/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2165 - accuracy: 0.9000\n",
      "Epoch 83/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2170 - accuracy: 0.8800\n",
      "Epoch 84/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2174 - accuracy: 0.8900\n",
      "Epoch 85/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2154 - accuracy: 0.8900\n",
      "Epoch 86/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2183 - accuracy: 0.8800\n",
      "Epoch 87/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2128 - accuracy: 0.8900\n",
      "Epoch 88/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2159 - accuracy: 0.8900\n",
      "Epoch 89/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2153 - accuracy: 0.8900\n",
      "Epoch 90/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2135 - accuracy: 0.8900\n",
      "Epoch 91/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2122 - accuracy: 0.9000\n",
      "Epoch 92/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2207 - accuracy: 0.8900\n",
      "Epoch 93/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2131 - accuracy: 0.8900\n",
      "Epoch 94/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2142 - accuracy: 0.8900\n",
      "Epoch 95/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2145 - accuracy: 0.8900\n",
      "Epoch 96/300\n",
      "100/100 [==============================] - 1s 11ms/step - loss: 0.2116 - accuracy: 0.9100\n",
      "Epoch 97/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.2128 - accuracy: 0.9100\n",
      "Epoch 98/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2108 - accuracy: 0.9000\n",
      "Epoch 99/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2099 - accuracy: 0.8800\n",
      "Epoch 100/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2121 - accuracy: 0.9000\n",
      "Epoch 101/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2110 - accuracy: 0.8900\n",
      "Epoch 102/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2102 - accuracy: 0.8900\n",
      "Epoch 103/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2095 - accuracy: 0.8900\n",
      "Epoch 104/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2063 - accuracy: 0.9000\n",
      "Epoch 105/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2087 - accuracy: 0.8700\n",
      "Epoch 106/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2099 - accuracy: 0.9100\n",
      "Epoch 107/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2054 - accuracy: 0.9000\n",
      "Epoch 108/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2072 - accuracy: 0.8900\n",
      "Epoch 109/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2068 - accuracy: 0.8900\n",
      "Epoch 110/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2047 - accuracy: 0.9000\n",
      "Epoch 111/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2030 - accuracy: 0.9100\n",
      "Epoch 112/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2058 - accuracy: 0.8900\n",
      "Epoch 113/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2043 - accuracy: 0.8900\n",
      "Epoch 114/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2029 - accuracy: 0.8900\n",
      "Epoch 115/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2027 - accuracy: 0.8900\n",
      "Epoch 116/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2026 - accuracy: 0.9000\n",
      "Epoch 117/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2022 - accuracy: 0.8900\n",
      "Epoch 118/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2044 - accuracy: 0.8800\n",
      "Epoch 119/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2034 - accuracy: 0.9000\n",
      "Epoch 120/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1975 - accuracy: 0.9100\n",
      "Epoch 121/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1995 - accuracy: 0.9000\n",
      "Epoch 122/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1974 - accuracy: 0.9000\n",
      "Epoch 123/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1962 - accuracy: 0.8900\n",
      "Epoch 124/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1946 - accuracy: 0.9100\n",
      "Epoch 125/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1965 - accuracy: 0.8900\n",
      "Epoch 126/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1935 - accuracy: 0.9100\n",
      "Epoch 127/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1938 - accuracy: 0.9000\n",
      "Epoch 128/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1938 - accuracy: 0.9100\n",
      "Epoch 129/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1917 - accuracy: 0.9100\n",
      "Epoch 130/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1893 - accuracy: 0.9200\n",
      "Epoch 131/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1944 - accuracy: 0.9000\n",
      "Epoch 132/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1901 - accuracy: 0.8900\n",
      "Epoch 133/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1875 - accuracy: 0.9100\n",
      "Epoch 134/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1885 - accuracy: 0.9000\n",
      "Epoch 135/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1874 - accuracy: 0.9000\n",
      "Epoch 136/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1856 - accuracy: 0.9300\n",
      "Epoch 137/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1849 - accuracy: 0.9000\n",
      "Epoch 138/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1860 - accuracy: 0.9200\n",
      "Epoch 139/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1829 - accuracy: 0.9100\n",
      "Epoch 140/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1870 - accuracy: 0.9100\n",
      "Epoch 141/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1824 - accuracy: 0.9000\n",
      "Epoch 142/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1807 - accuracy: 0.9200\n",
      "Epoch 143/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1791 - accuracy: 0.9100\n",
      "Epoch 144/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1877 - accuracy: 0.9300\n",
      "Epoch 145/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1810 - accuracy: 0.9100\n",
      "Epoch 146/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1810 - accuracy: 0.9200\n",
      "Epoch 147/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1786 - accuracy: 0.9100\n",
      "Epoch 148/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1759 - accuracy: 0.9000\n",
      "Epoch 149/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1740 - accuracy: 0.9200\n",
      "Epoch 150/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1782 - accuracy: 0.9200\n",
      "Epoch 151/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1744 - accuracy: 0.9200\n",
      "Epoch 152/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1731 - accuracy: 0.9200\n",
      "Epoch 153/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1746 - accuracy: 0.9200\n",
      "Epoch 154/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1708 - accuracy: 0.9200\n",
      "Epoch 155/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1686 - accuracy: 0.9200\n",
      "Epoch 156/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1683 - accuracy: 0.9200\n",
      "Epoch 157/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1789 - accuracy: 0.8900\n",
      "Epoch 158/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1666 - accuracy: 0.9300\n",
      "Epoch 159/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1671 - accuracy: 0.9300\n",
      "Epoch 160/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1641 - accuracy: 0.9200\n",
      "Epoch 161/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1644 - accuracy: 0.9100\n",
      "Epoch 162/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1650 - accuracy: 0.9300\n",
      "Epoch 163/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1613 - accuracy: 0.9200\n",
      "Epoch 164/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1621 - accuracy: 0.9200\n",
      "Epoch 165/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1603 - accuracy: 0.9200\n",
      "Epoch 166/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1672 - accuracy: 0.9300\n",
      "Epoch 167/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1615 - accuracy: 0.9200\n",
      "Epoch 168/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1591 - accuracy: 0.9300\n",
      "Epoch 169/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1579 - accuracy: 0.9200\n",
      "Epoch 170/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1562 - accuracy: 0.9200\n",
      "Epoch 171/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1562 - accuracy: 0.9300\n",
      "Epoch 172/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1565 - accuracy: 0.9400\n",
      "Epoch 173/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1548 - accuracy: 0.9300\n",
      "Epoch 174/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1532 - accuracy: 0.9300\n",
      "Epoch 175/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1520 - accuracy: 0.9400\n",
      "Epoch 176/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1506 - accuracy: 0.9400\n",
      "Epoch 177/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1501 - accuracy: 0.9300\n",
      "Epoch 178/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1511 - accuracy: 0.9300\n",
      "Epoch 179/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1495 - accuracy: 0.9500\n",
      "Epoch 180/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1467 - accuracy: 0.9300\n",
      "Epoch 181/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1480 - accuracy: 0.9400\n",
      "Epoch 182/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1457 - accuracy: 0.9400\n",
      "Epoch 183/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1425 - accuracy: 0.9500\n",
      "Epoch 184/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1424 - accuracy: 0.9400\n",
      "Epoch 185/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1421 - accuracy: 0.9300\n",
      "Epoch 186/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1418 - accuracy: 0.9400\n",
      "Epoch 187/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1384 - accuracy: 0.9400\n",
      "Epoch 188/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1420 - accuracy: 0.9300\n",
      "Epoch 189/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1385 - accuracy: 0.9400\n",
      "Epoch 190/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1361 - accuracy: 0.9400\n",
      "Epoch 191/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1375 - accuracy: 0.9300\n",
      "Epoch 192/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1349 - accuracy: 0.9600\n",
      "Epoch 193/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1319 - accuracy: 0.9600\n",
      "Epoch 194/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1320 - accuracy: 0.9500\n",
      "Epoch 195/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1312 - accuracy: 0.9500\n",
      "Epoch 196/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1297 - accuracy: 0.9500\n",
      "Epoch 197/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1259 - accuracy: 0.9500\n",
      "Epoch 198/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1278 - accuracy: 0.9500\n",
      "Epoch 199/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1240 - accuracy: 0.9500\n",
      "Epoch 200/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1239 - accuracy: 0.9500\n",
      "Epoch 201/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1245 - accuracy: 0.9500\n",
      "Epoch 202/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1239 - accuracy: 0.9500\n",
      "Epoch 203/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1198 - accuracy: 0.9500\n",
      "Epoch 204/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1184 - accuracy: 0.9500\n",
      "Epoch 205/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1178 - accuracy: 0.9600\n",
      "Epoch 206/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1144 - accuracy: 0.9600\n",
      "Epoch 207/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1145 - accuracy: 0.9600\n",
      "Epoch 208/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1129 - accuracy: 0.9500\n",
      "Epoch 209/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1147 - accuracy: 0.9600\n",
      "Epoch 210/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1115 - accuracy: 0.9600\n",
      "Epoch 211/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1097 - accuracy: 0.9600\n",
      "Epoch 212/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1093 - accuracy: 0.9600\n",
      "Epoch 213/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1062 - accuracy: 0.9700\n",
      "Epoch 214/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1059 - accuracy: 0.9600\n",
      "Epoch 215/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1018 - accuracy: 0.9700\n",
      "Epoch 216/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1023 - accuracy: 0.9600\n",
      "Epoch 217/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.1000 - accuracy: 0.9700\n",
      "Epoch 218/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0990 - accuracy: 0.9600\n",
      "Epoch 219/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0991 - accuracy: 0.9700\n",
      "Epoch 220/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0975 - accuracy: 0.9700\n",
      "Epoch 221/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0947 - accuracy: 0.9700\n",
      "Epoch 222/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0948 - accuracy: 0.9700\n",
      "Epoch 223/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0928 - accuracy: 0.9700\n",
      "Epoch 224/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0903 - accuracy: 0.9700\n",
      "Epoch 225/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0898 - accuracy: 0.9800\n",
      "Epoch 226/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0884 - accuracy: 0.9800\n",
      "Epoch 227/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0867 - accuracy: 0.9800\n",
      "Epoch 228/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0833 - accuracy: 0.9700\n",
      "Epoch 229/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0824 - accuracy: 0.9800\n",
      "Epoch 230/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0796 - accuracy: 0.9800\n",
      "Epoch 231/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0774 - accuracy: 0.9800\n",
      "Epoch 232/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0768 - accuracy: 0.9800\n",
      "Epoch 233/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0737 - accuracy: 0.9800\n",
      "Epoch 234/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0731 - accuracy: 0.9800\n",
      "Epoch 235/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0726 - accuracy: 0.9900\n",
      "Epoch 236/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0694 - accuracy: 0.9800\n",
      "Epoch 237/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0672 - accuracy: 0.9900\n",
      "Epoch 238/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0658 - accuracy: 0.9900\n",
      "Epoch 239/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0659 - accuracy: 0.9800\n",
      "Epoch 240/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0642 - accuracy: 0.9900\n",
      "Epoch 241/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0621 - accuracy: 0.9800\n",
      "Epoch 242/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0608 - accuracy: 0.9900\n",
      "Epoch 243/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0595 - accuracy: 0.9900\n",
      "Epoch 244/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0596 - accuracy: 0.9900\n",
      "Epoch 245/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0567 - accuracy: 0.9900\n",
      "Epoch 246/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0557 - accuracy: 0.9900\n",
      "Epoch 247/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0547 - accuracy: 1.0000\n",
      "Epoch 248/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0539 - accuracy: 0.9900\n",
      "Epoch 249/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0517 - accuracy: 0.9900\n",
      "Epoch 250/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0505 - accuracy: 0.9900\n",
      "Epoch 251/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0492 - accuracy: 0.9900\n",
      "Epoch 252/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0474 - accuracy: 0.9900\n",
      "Epoch 253/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0460 - accuracy: 1.0000\n",
      "Epoch 254/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0457 - accuracy: 1.0000\n",
      "Epoch 255/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0438 - accuracy: 1.0000\n",
      "Epoch 256/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0425 - accuracy: 0.9900\n",
      "Epoch 257/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0417 - accuracy: 1.0000\n",
      "Epoch 258/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0399 - accuracy: 1.0000\n",
      "Epoch 259/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0385 - accuracy: 1.0000\n",
      "Epoch 260/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0382 - accuracy: 1.0000\n",
      "Epoch 261/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0360 - accuracy: 1.0000\n",
      "Epoch 262/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0360 - accuracy: 1.0000\n",
      "Epoch 263/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0339 - accuracy: 1.0000\n",
      "Epoch 264/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0342 - accuracy: 1.0000\n",
      "Epoch 265/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0332 - accuracy: 1.0000\n",
      "Epoch 266/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0311 - accuracy: 1.0000\n",
      "Epoch 267/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0308 - accuracy: 1.0000\n",
      "Epoch 268/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0294 - accuracy: 1.0000\n",
      "Epoch 269/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0289 - accuracy: 1.0000\n",
      "Epoch 270/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0280 - accuracy: 1.0000\n",
      "Epoch 271/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0274 - accuracy: 1.0000\n",
      "Epoch 272/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0269 - accuracy: 1.0000\n",
      "Epoch 273/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0258 - accuracy: 1.0000\n",
      "Epoch 274/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0253 - accuracy: 1.0000\n",
      "Epoch 275/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0239 - accuracy: 1.0000\n",
      "Epoch 276/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0242 - accuracy: 1.0000\n",
      "Epoch 277/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0227 - accuracy: 1.0000\n",
      "Epoch 278/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0228 - accuracy: 1.0000\n",
      "Epoch 279/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0218 - accuracy: 1.0000\n",
      "Epoch 280/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0210 - accuracy: 1.0000\n",
      "Epoch 281/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0201 - accuracy: 1.0000\n",
      "Epoch 282/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0199 - accuracy: 1.0000\n",
      "Epoch 283/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0193 - accuracy: 1.0000\n",
      "Epoch 284/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0197 - accuracy: 1.0000\n",
      "Epoch 285/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0184 - accuracy: 1.0000\n",
      "Epoch 286/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0176 - accuracy: 1.0000\n",
      "Epoch 287/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0179 - accuracy: 1.0000\n",
      "Epoch 288/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0169 - accuracy: 1.0000\n",
      "Epoch 289/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0174 - accuracy: 1.0000\n",
      "Epoch 290/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0160 - accuracy: 1.0000\n",
      "Epoch 291/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0154 - accuracy: 1.0000\n",
      "Epoch 292/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0150 - accuracy: 1.0000\n",
      "Epoch 293/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0151 - accuracy: 1.0000\n",
      "Epoch 294/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0144 - accuracy: 1.0000\n",
      "Epoch 295/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0139 - accuracy: 1.0000\n",
      "Epoch 296/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0134 - accuracy: 1.0000\n",
      "Epoch 297/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0131 - accuracy: 1.0000\n",
      "Epoch 298/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0125 - accuracy: 1.0000\n",
      "Epoch 299/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.0133 - accuracy: 1.0000\n",
      "Epoch 300/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0122 - accuracy: 1.0000\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a4747eef0>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h1_many = create_model_h1_many()\n",
    "model_h1_many.fit(X, Y, epochs=300, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Get the weights and calculate the hidden layer's activations for each point."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "W1, b1 = model_h1_many.layers[0].get_weights()\n",
    "W2, b2 = model_h1_many.layers[1].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    hidden_layer_activations = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)\n",
    "    Z1[i] = hidden_layer_activations[0]\n",
    "    Z2[i] = hidden_layer_activations[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that in this example the dimensionality of Z is much higher than 2. For each input point, we are simply plotting the activations of two of the hidden layer's 75 neurons. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W2 = W2.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b2 + W2[0]*z1_min) / W2[1]\n",
    "z2 = -(b2 + W2[0]*z1_max) / W2[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(1)}_1$')\n",
    "plt.ylabel(r'$Z^{(1)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h1_many, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 2: How many hidden units?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also study the effect of changing the number if perceptron units. Staying with the two layer model and repeating the analysis above..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h2_many():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add two hidden layers, with 50 units in the first...\n",
    "    model.add(Dense(50, input_dim=2, kernel_initializer='normal', activation='relu'))\n",
    "    # ...two in the second...\n",
    "    model.add(Dense(2, kernel_initializer='normal', activation='relu'))\n",
    "    # ...and a single output\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))\n",
    "\n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "100/100 [==============================] - 2s 20ms/step - loss: 0.6879 - accuracy: 0.6800\n",
      "Epoch 2/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6523 - accuracy: 0.8200\n",
      "Epoch 3/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5585 - accuracy: 0.8300\n",
      "Epoch 4/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4384 - accuracy: 0.8500\n",
      "Epoch 5/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3611 - accuracy: 0.8600\n",
      "Epoch 6/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3230 - accuracy: 0.8500\n",
      "Epoch 7/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3023 - accuracy: 0.8700\n",
      "Epoch 8/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2909 - accuracy: 0.8700\n",
      "Epoch 9/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2888 - accuracy: 0.8700\n",
      "Epoch 10/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2794 - accuracy: 0.8700\n",
      "Epoch 11/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2731 - accuracy: 0.8700\n",
      "Epoch 12/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2762 - accuracy: 0.8700\n",
      "Epoch 13/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2704 - accuracy: 0.8800\n",
      "Epoch 14/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2654 - accuracy: 0.8800\n",
      "Epoch 15/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2669 - accuracy: 0.8600\n",
      "Epoch 16/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 17/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2610 - accuracy: 0.8800\n",
      "Epoch 18/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2589 - accuracy: 0.8800\n",
      "Epoch 19/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2587 - accuracy: 0.8800\n",
      "Epoch 20/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2563 - accuracy: 0.8900\n",
      "Epoch 21/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2555 - accuracy: 0.8800\n",
      "Epoch 22/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2554 - accuracy: 0.8800\n",
      "Epoch 23/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2517 - accuracy: 0.8900\n",
      "Epoch 24/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2537 - accuracy: 0.8800\n",
      "Epoch 25/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2525 - accuracy: 0.8900\n",
      "Epoch 26/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2486 - accuracy: 0.8900\n",
      "Epoch 27/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2478 - accuracy: 0.8800\n",
      "Epoch 28/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2456 - accuracy: 0.8800\n",
      "Epoch 29/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2488 - accuracy: 0.8900\n",
      "Epoch 30/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2442 - accuracy: 0.8800\n",
      "Epoch 31/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2431 - accuracy: 0.8800\n",
      "Epoch 32/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2427 - accuracy: 0.8800\n",
      "Epoch 33/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2411 - accuracy: 0.8900\n",
      "Epoch 34/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2444 - accuracy: 0.8800\n",
      "Epoch 35/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2393 - accuracy: 0.8800\n",
      "Epoch 36/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2393 - accuracy: 0.8900\n",
      "Epoch 37/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2449 - accuracy: 0.8700\n",
      "Epoch 38/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2368 - accuracy: 0.8900\n",
      "Epoch 39/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2381 - accuracy: 0.8700\n",
      "Epoch 40/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2399 - accuracy: 0.8800\n",
      "Epoch 41/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2396 - accuracy: 0.8800\n",
      "Epoch 42/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2351 - accuracy: 0.8800\n",
      "Epoch 43/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2367 - accuracy: 0.8800\n",
      "Epoch 44/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2334 - accuracy: 0.8800\n",
      "Epoch 45/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2324 - accuracy: 0.8800\n",
      "Epoch 46/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2337 - accuracy: 0.8800\n",
      "Epoch 47/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2329 - accuracy: 0.8700\n",
      "Epoch 48/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2312 - accuracy: 0.8700\n",
      "Epoch 49/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2314 - accuracy: 0.9000\n",
      "Epoch 50/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2294 - accuracy: 0.8800\n",
      "Epoch 51/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2336 - accuracy: 0.8900\n",
      "Epoch 52/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2309 - accuracy: 0.8800\n",
      "Epoch 53/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2310 - accuracy: 0.8800\n",
      "Epoch 54/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2272 - accuracy: 0.9000\n",
      "Epoch 55/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2364 - accuracy: 0.8600\n",
      "Epoch 56/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2341 - accuracy: 0.8700\n",
      "Epoch 57/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2278 - accuracy: 0.8800\n",
      "Epoch 58/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2301 - accuracy: 0.8800\n",
      "Epoch 59/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2280 - accuracy: 0.8900\n",
      "Epoch 60/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2303 - accuracy: 0.8900\n",
      "Epoch 61/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2274 - accuracy: 0.8900\n",
      "Epoch 62/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2304 - accuracy: 0.8700\n",
      "Epoch 63/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2273 - accuracy: 0.8900\n",
      "Epoch 64/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2279 - accuracy: 0.8800\n",
      "Epoch 65/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2295 - accuracy: 0.8900\n",
      "Epoch 66/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2301 - accuracy: 0.8700\n",
      "Epoch 67/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2268 - accuracy: 0.8800\n",
      "Epoch 68/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2295 - accuracy: 0.8800\n",
      "Epoch 69/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2297 - accuracy: 0.8800\n",
      "Epoch 70/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2254 - accuracy: 0.8900\n",
      "Epoch 71/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2251 - accuracy: 0.8900\n",
      "Epoch 72/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8800\n",
      "Epoch 73/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2274 - accuracy: 0.8800\n",
      "Epoch 74/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2299 - accuracy: 0.8800\n",
      "Epoch 75/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2239 - accuracy: 0.8700\n",
      "Epoch 76/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2262 - accuracy: 0.8800\n",
      "Epoch 77/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2281 - accuracy: 0.8800\n",
      "Epoch 78/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2272 - accuracy: 0.8800\n",
      "Epoch 79/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2281 - accuracy: 0.8800\n",
      "Epoch 80/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8800\n",
      "Epoch 81/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2256 - accuracy: 0.8800\n",
      "Epoch 82/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2243 - accuracy: 0.8900\n",
      "Epoch 83/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2241 - accuracy: 0.8900\n",
      "Epoch 84/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2257 - accuracy: 0.8900\n",
      "Epoch 85/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2229 - accuracy: 0.8900\n",
      "Epoch 86/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2260 - accuracy: 0.8700\n",
      "Epoch 87/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2334 - accuracy: 0.9000\n",
      "Epoch 88/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2235 - accuracy: 0.8800\n",
      "Epoch 89/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8900\n",
      "Epoch 90/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8800\n",
      "Epoch 91/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2240 - accuracy: 0.8800\n",
      "Epoch 92/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2241 - accuracy: 0.8800\n",
      "Epoch 93/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2226 - accuracy: 0.8800\n",
      "Epoch 94/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2271 - accuracy: 0.8800\n",
      "Epoch 95/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8900\n",
      "Epoch 96/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2272 - accuracy: 0.8700\n",
      "Epoch 97/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2276 - accuracy: 0.8900\n",
      "Epoch 98/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2267 - accuracy: 0.8800\n",
      "Epoch 99/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.8900\n",
      "Epoch 100/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2233 - accuracy: 0.8700\n",
      "Epoch 101/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2292 - accuracy: 0.8800\n",
      "Epoch 102/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2242 - accuracy: 0.8800\n",
      "Epoch 103/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2275 - accuracy: 0.8800\n",
      "Epoch 104/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2285 - accuracy: 0.8900\n",
      "Epoch 105/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2236 - accuracy: 0.8900\n",
      "Epoch 106/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2260 - accuracy: 0.8900\n",
      "Epoch 107/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2270 - accuracy: 0.8700\n",
      "Epoch 108/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2247 - accuracy: 0.8800\n",
      "Epoch 109/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2264 - accuracy: 0.8700\n",
      "Epoch 110/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2236 - accuracy: 0.8800\n",
      "Epoch 111/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.9000\n",
      "Epoch 112/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2271 - accuracy: 0.8900\n",
      "Epoch 113/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2221 - accuracy: 0.8800\n",
      "Epoch 114/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.8800\n",
      "Epoch 115/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2234 - accuracy: 0.8800\n",
      "Epoch 116/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2279 - accuracy: 0.8900\n",
      "Epoch 117/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2247 - accuracy: 0.8800\n",
      "Epoch 118/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2277 - accuracy: 0.8900\n",
      "Epoch 119/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2270 - accuracy: 0.8800\n",
      "Epoch 120/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2213 - accuracy: 0.8800\n",
      "Epoch 121/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2246 - accuracy: 0.8900\n",
      "Epoch 122/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2252 - accuracy: 0.8700\n",
      "Epoch 123/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2247 - accuracy: 0.8900\n",
      "Epoch 124/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2271 - accuracy: 0.8700\n",
      "Epoch 125/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2245 - accuracy: 0.8900\n",
      "Epoch 126/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2259 - accuracy: 0.8700\n",
      "Epoch 127/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2263 - accuracy: 0.8800\n",
      "Epoch 128/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2270 - accuracy: 0.8900\n",
      "Epoch 129/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2232 - accuracy: 0.8800\n",
      "Epoch 130/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2249 - accuracy: 0.8900\n",
      "Epoch 131/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2245 - accuracy: 0.8800\n",
      "Epoch 132/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2238 - accuracy: 0.9000\n",
      "Epoch 133/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2265 - accuracy: 0.8700\n",
      "Epoch 134/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2278 - accuracy: 0.8900\n",
      "Epoch 135/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2295 - accuracy: 0.8900\n",
      "Epoch 136/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2262 - accuracy: 0.8800\n",
      "Epoch 137/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2220 - accuracy: 0.8900\n",
      "Epoch 138/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2232 - accuracy: 0.8800\n",
      "Epoch 139/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2291 - accuracy: 0.8900\n",
      "Epoch 140/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2269 - accuracy: 0.8900\n",
      "Epoch 141/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2249 - accuracy: 0.8900\n",
      "Epoch 142/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2235 - accuracy: 0.8900\n",
      "Epoch 143/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8800\n",
      "Epoch 144/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2265 - accuracy: 0.8800\n",
      "Epoch 145/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2246 - accuracy: 0.8700\n",
      "Epoch 146/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2272 - accuracy: 0.8800\n",
      "Epoch 147/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2248 - accuracy: 0.8900\n",
      "Epoch 148/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2218 - accuracy: 0.8900\n",
      "Epoch 149/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8800\n",
      "Epoch 150/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8800\n",
      "Epoch 151/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2296 - accuracy: 0.8900\n",
      "Epoch 152/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2278 - accuracy: 0.8800\n",
      "Epoch 153/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2260 - accuracy: 0.9000\n",
      "Epoch 154/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2227 - accuracy: 0.8700\n",
      "Epoch 155/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2262 - accuracy: 0.8900\n",
      "Epoch 156/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2228 - accuracy: 0.8800\n",
      "Epoch 157/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8900\n",
      "Epoch 158/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2243 - accuracy: 0.8900\n",
      "Epoch 159/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2221 - accuracy: 0.8800\n",
      "Epoch 160/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8700\n",
      "Epoch 161/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2280 - accuracy: 0.8800\n",
      "Epoch 162/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2231 - accuracy: 0.8800\n",
      "Epoch 163/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2255 - accuracy: 0.8900\n",
      "Epoch 164/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2249 - accuracy: 0.8900\n",
      "Epoch 165/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2248 - accuracy: 0.8800\n",
      "Epoch 166/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2241 - accuracy: 0.8900\n",
      "Epoch 167/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2228 - accuracy: 0.8900\n",
      "Epoch 168/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2255 - accuracy: 0.8800\n",
      "Epoch 169/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2241 - accuracy: 0.8800\n",
      "Epoch 170/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2217 - accuracy: 0.8900\n",
      "Epoch 171/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2262 - accuracy: 0.8900\n",
      "Epoch 172/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2305 - accuracy: 0.8700\n",
      "Epoch 173/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2269 - accuracy: 0.8800\n",
      "Epoch 174/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2234 - accuracy: 0.8800\n",
      "Epoch 175/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2236 - accuracy: 0.8900\n",
      "Epoch 176/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2254 - accuracy: 0.8800\n",
      "Epoch 177/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2274 - accuracy: 0.8800\n",
      "Epoch 178/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2232 - accuracy: 0.8900\n",
      "Epoch 179/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8900\n",
      "Epoch 180/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8900\n",
      "Epoch 181/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2268 - accuracy: 0.8800\n",
      "Epoch 182/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2272 - accuracy: 0.8900\n",
      "Epoch 183/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2223 - accuracy: 0.8900\n",
      "Epoch 184/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2273 - accuracy: 0.8900\n",
      "Epoch 185/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2239 - accuracy: 0.8900\n",
      "Epoch 186/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2228 - accuracy: 0.8900\n",
      "Epoch 187/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2244 - accuracy: 0.8900\n",
      "Epoch 188/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2220 - accuracy: 0.8900\n",
      "Epoch 189/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2221 - accuracy: 0.8900\n",
      "Epoch 190/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2272 - accuracy: 0.8800\n",
      "Epoch 191/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2234 - accuracy: 0.8800\n",
      "Epoch 192/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2227 - accuracy: 0.8800\n",
      "Epoch 193/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2233 - accuracy: 0.8800\n",
      "Epoch 194/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2235 - accuracy: 0.8800\n",
      "Epoch 195/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2217 - accuracy: 0.8900\n",
      "Epoch 196/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2238 - accuracy: 0.8800\n",
      "Epoch 197/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2228 - accuracy: 0.8800\n",
      "Epoch 198/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2232 - accuracy: 0.8900\n",
      "Epoch 199/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2235 - accuracy: 0.8800\n",
      "Epoch 200/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8800\n",
      "Epoch 201/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2240 - accuracy: 0.8700\n",
      "Epoch 202/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2265 - accuracy: 0.8800\n",
      "Epoch 203/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2230 - accuracy: 0.8800\n",
      "Epoch 204/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2291 - accuracy: 0.8700\n",
      "Epoch 205/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2265 - accuracy: 0.8800\n",
      "Epoch 206/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2244 - accuracy: 0.8800\n",
      "Epoch 207/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2274 - accuracy: 0.8900\n",
      "Epoch 208/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2259 - accuracy: 0.8900\n",
      "Epoch 209/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2230 - accuracy: 0.8800\n",
      "Epoch 210/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2252 - accuracy: 0.8700\n",
      "Epoch 211/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2240 - accuracy: 0.8900\n",
      "Epoch 212/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2236 - accuracy: 0.8900\n",
      "Epoch 213/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2246 - accuracy: 0.8900\n",
      "Epoch 214/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2238 - accuracy: 0.8900\n",
      "Epoch 215/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.8900\n",
      "Epoch 216/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2246 - accuracy: 0.8900\n",
      "Epoch 217/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2223 - accuracy: 0.8900\n",
      "Epoch 218/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2233 - accuracy: 0.8800\n",
      "Epoch 219/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2263 - accuracy: 0.8800\n",
      "Epoch 220/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2248 - accuracy: 0.8800\n",
      "Epoch 221/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2213 - accuracy: 0.9000\n",
      "Epoch 222/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8800\n",
      "Epoch 223/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2225 - accuracy: 0.8900\n",
      "Epoch 224/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2246 - accuracy: 0.9000\n",
      "Epoch 225/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.8900\n",
      "Epoch 226/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2246 - accuracy: 0.8800\n",
      "Epoch 227/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2245 - accuracy: 0.8700\n",
      "Epoch 228/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2274 - accuracy: 0.8800\n",
      "Epoch 229/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.8900\n",
      "Epoch 230/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2242 - accuracy: 0.8900\n",
      "Epoch 231/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2227 - accuracy: 0.8800\n",
      "Epoch 232/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2223 - accuracy: 0.8800\n",
      "Epoch 233/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2244 - accuracy: 0.8900\n",
      "Epoch 234/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2217 - accuracy: 0.8900\n",
      "Epoch 235/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2228 - accuracy: 0.8800\n",
      "Epoch 236/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2257 - accuracy: 0.8900\n",
      "Epoch 237/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2272 - accuracy: 0.8800\n",
      "Epoch 238/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2260 - accuracy: 0.9000\n",
      "Epoch 239/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2284 - accuracy: 0.8600\n",
      "Epoch 240/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2241 - accuracy: 0.8900\n",
      "Epoch 241/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2246 - accuracy: 0.8900\n",
      "Epoch 242/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2236 - accuracy: 0.8800\n",
      "Epoch 243/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2216 - accuracy: 0.8700\n",
      "Epoch 244/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2259 - accuracy: 0.8900\n",
      "Epoch 245/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2226 - accuracy: 0.8800\n",
      "Epoch 246/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2221 - accuracy: 0.8800\n",
      "Epoch 247/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2257 - accuracy: 0.8800\n",
      "Epoch 248/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2216 - accuracy: 0.9000\n",
      "Epoch 249/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2257 - accuracy: 0.8800\n",
      "Epoch 250/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2215 - accuracy: 0.8900\n",
      "Epoch 251/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2257 - accuracy: 0.8900\n",
      "Epoch 252/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2263 - accuracy: 0.8900\n",
      "Epoch 253/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2223 - accuracy: 0.8900\n",
      "Epoch 254/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2283 - accuracy: 0.8800\n",
      "Epoch 255/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2283 - accuracy: 0.8600\n",
      "Epoch 256/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2220 - accuracy: 0.8900\n",
      "Epoch 257/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2269 - accuracy: 0.9000\n",
      "Epoch 258/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2239 - accuracy: 0.8800\n",
      "Epoch 259/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2296 - accuracy: 0.8900\n",
      "Epoch 260/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2264 - accuracy: 0.8800\n",
      "Epoch 261/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2279 - accuracy: 0.8800\n",
      "Epoch 262/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2240 - accuracy: 0.8900\n",
      "Epoch 263/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8900\n",
      "Epoch 264/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2247 - accuracy: 0.8900\n",
      "Epoch 265/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2253 - accuracy: 0.8800\n",
      "Epoch 266/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2280 - accuracy: 0.8800\n",
      "Epoch 267/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2242 - accuracy: 0.8800\n",
      "Epoch 268/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8800\n",
      "Epoch 269/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2231 - accuracy: 0.8900\n",
      "Epoch 270/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2246 - accuracy: 0.8700\n",
      "Epoch 271/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2316 - accuracy: 0.8900\n",
      "Epoch 272/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2233 - accuracy: 0.8800\n",
      "Epoch 273/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2276 - accuracy: 0.8900\n",
      "Epoch 274/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2244 - accuracy: 0.8700\n",
      "Epoch 275/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2255 - accuracy: 0.8900\n",
      "Epoch 276/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2245 - accuracy: 0.8800\n",
      "Epoch 277/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2268 - accuracy: 0.8900\n",
      "Epoch 278/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2231 - accuracy: 0.8800\n",
      "Epoch 279/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2259 - accuracy: 0.8800\n",
      "Epoch 280/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2236 - accuracy: 0.9000\n",
      "Epoch 281/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2233 - accuracy: 0.8900\n",
      "Epoch 282/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2224 - accuracy: 0.8900\n",
      "Epoch 283/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2250 - accuracy: 0.8800\n",
      "Epoch 284/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8800\n",
      "Epoch 285/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2214 - accuracy: 0.8800\n",
      "Epoch 286/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2207 - accuracy: 0.8800\n",
      "Epoch 287/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2240 - accuracy: 0.8800\n",
      "Epoch 288/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2235 - accuracy: 0.8900\n",
      "Epoch 289/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2245 - accuracy: 0.8900\n",
      "Epoch 290/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2223 - accuracy: 0.8800\n",
      "Epoch 291/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2285 - accuracy: 0.8700\n",
      "Epoch 292/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2219 - accuracy: 0.8900\n",
      "Epoch 293/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2217 - accuracy: 0.8700\n",
      "Epoch 294/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2225 - accuracy: 0.8800\n",
      "Epoch 295/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2237 - accuracy: 0.8800\n",
      "Epoch 296/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2235 - accuracy: 0.8800\n",
      "Epoch 297/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2277 - accuracy: 0.8800\n",
      "Epoch 298/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2260 - accuracy: 0.8700\n",
      "Epoch 299/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2273 - accuracy: 0.8900\n",
      "Epoch 300/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2282 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a4901c978>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h2_many = create_model_h2_many()\n",
    "model_h2_many.fit(X, Y, epochs=300, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Get the trained weights and use them to calculate the output of the second hidden layer:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "\n",
    "W1, b1 = model_h2_many.layers[0].get_weights()\n",
    "W2, b2 = model_h2_many.layers[1].get_weights()\n",
    "W3, b3 = model_h2_many.layers[2].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    z = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)\n",
    "    Z1[i], Z2[i] = np.maximum(np.matmul(np.transpose(W2), z) + b2, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEOCAYAAACNY7BQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXxU1d348c93lqyEJEBIAklI2GVHwqai4gri1lbrUre2Frda9bGtdvl1eZ62j7W12tbW1t0+tVaLWneBuuGKhkVAQLYECAlJgCRA1lnO7487WW5mAkGS3Anzfb9eo5k79845M8D95nzPJsYYlFJKqRYupyuglFIqumhgUEopZaOBQSmllI0GBqWUUjYaGJRSStloYFBKKWXjcboC3WHQoEEmPz/f6WoopVSfsmLFij3GmIyOx4+JwJCfn09RUZHT1VBKqT5FRLZHOq6pJKWUUjYaGJRSStloYFBKKWWjgUEppZTNMdH5/EWsLtnH/774GfsONlM4YgB3nDuetOQ4p6ullFKOi8kWw6urS7n+sU/YvreeA01+3lpfybm/fZv6Jp/TVVNKKcfFZGD41QufhR3zBw2/fmm9A7VRSqnoEpOBwR+MfPzdz6t6tyJKKRWFHA8MIuIWkVUi8nLoeYGILBeRzSLytIj0WuLfH+gkYiilVAxxPDAAtwAb2j3/NXCvMWYUUA18s7cqMiglvreKUkqpqOVoYBCRHGAB8HDouQCnAYtCpzwBXNjt5XZyfHRW/+4uSiml+hynWwz3Ad8HWnI4A4EaY4w/9LwUGBrpQhFZKCJFIlJUVXVkfQOpid6Ix0dkpRzR+yil1LHIscAgIucClcaYFe0PRzjVRLreGPOgMabQGFOYkRG2OOAhJca7Ix5PSYjZaR1KKdXKyTvhicD5InIOkAD0x2pBpImIJ9RqyAHKurvg2vrmiMfLqhu6uyillOpzHGsxGGN+YIzJMcbkA5cCbxpjvga8BVwUOu1q4IXuLjt3QHLYMa9bGKWpJKWUcryPIZI7gP8SkS1YfQ6PdHcBQwYkhR3zBQwFGf26uyillOpzoiKpbox5G3g79PM2YEZPlreqZF/YMQHe3VjJhNy0nixaKaWiXjS2GHqcS8L7uF0uweXqbCCrUkrFjpgMDOdOHULHGOACzp6U7Uh9lFIqmsRkYOiXEGEeg0C8N/IwVqWUiiUxGRgWfbyDYITZEa992u0jY5VSqs+JycDQ4AuEHfMHDHWN/ghnK6VUbInJwHDK2MF4OnQyxHtdnHLcYIdqpJRS0SMmA8P1p48i3mv/6NMKBjApL92hGimlVPSIycCw6OOd+AP2ToaibfsoqTroUI2UUip6xGRgeHFFKU0dtnHzBw2L15Q7VCOllIoeMRkYgiZ8SJIxhkCkoUpKKRVjYjIwnD1pCHEe+0f3ul2cOTHLoRoppVT0iMnAcMPpoxg3pD9uAY9L8LiEG88YxSjdwU0ppWIzMJTXNrCl4iAul+APGjxu4e0NlfgDwcNfrJRSx7iYDAz3vbaRuiY/vtDIpEZfkI3l+3lv05FtEaqUUseimAwM60prw/YLbWgOsKqk2pH6KKVUNHFyz+cEEflYRD4Vkc9E5Oeh44+LSLGIrA49pnR32YP7x4cdS/C6yBmQ2N1FKaVUn+Nki6EJOM0YMxmYAswTkVmh175njJkSeqzu7oJvOGO0beazK7Sy6rxJQ7q7KKWU6nOc3PPZGGNaphp7Q49emUhw8tjB/PLiyeQNSiI53sNJozN4/LrZpCRGWI5bKaVijKN9DCLiFpHVQCWw1BizPPTSL0VkjYjcKyLheR/r2oUiUiQiRVVVR9ZpXNfk54l3i6msbQIMH23dy9K1OutZKaXA4cBgjAkYY6YAOcAMEZkA/AAYC0wHBgB3dHLtg8aYQmNMYUZGxhGV++elm9hYVkujL0BdU4Bmf5BH3tnKxrLao/tASil1DIiKUUnGmBrgbWCeMaY8lGZqAh4DZnR3ef9Zt7t1qGqLZn+QN9ZVdHdRSinV5zg5KilDRNJCPycCZwAbRSQ7dEyAC4F13V22xy1hx9wixHnCjyulVKxxssWQDbwlImuAT7D6GF4GnhSRtcBaYBDwi+4u+EuFucR3WCvJ7RLmTdZRSUop5XGqYGPMGmBqhOOn9XTZ15w8nMr9jbz+aTlul+D1CD+6YAK5A5N7umillIp6jgUGJ3ncLu48bzxzxgxm+946Thk7WIOCUkqFxGRgqK1v5oZHP2Z3bSMGePDNLVw6axg3njna6aoppZTjomJUUm+7f8kmduytp745QEOzNVz1meXbWbND10pSSqmYDAxvb6zA32G3tiZfkHc2VDpUI6WUih4xGRgSve6wYx63kJwQk5k1pZSyicnAcMmsYSR4w4erztfhqkopFZuB4bLZ+Vw0I494rwuvWxjcP567Lzue7DRddlsppWIyd+JyCd8+awwLTxtFXZOftCQv1kRrpZRSMRkYAFaV7OPRd7ZSXtPIjBED+eapIxjYL+JCrkopFVNiMjAs37qH7/9jFU3+IAC7axt4d2MlT998EknxMfmVKKVUq5jsY7h/yabWoADgDxgONPpZonsyKKVUbAaGsuqGsGONvgDbKg9GOFsppWJLTAaG0VkpYccS49xMzE1zoDZKKRVdYjIw3Dp/LIlxbjwuayRSgtdF3sBkTj0u0+GaKaWU82Kyp3VMdn+evPEEnlm+g5176zlh1CAWTB2K1xOTcVIppWwcCwwikgAsA+JD9VhkjPmpiBQA/8Ta73klcKUxprm7yx+SnsSt88Z299sqpVSf5+SvyE3AacaYycAUYJ6IzAJ+DdxrjBkFVAPf7InCy6ob+MPijdzx1Cqe/2QnTb5ATxSjlFJ9jpM7uBmgZRiQN/QwwGnA5aHjTwA/Ax7ozrI3le/nukc/xucP4g8alm/dw4srS3no2pl43JpOUkrFNkfvgiLiFpHVQCWwFNgK1Bhj/KFTSoGhnVy7UESKRKSoqqrqiMq97/WNNDQHWpfebvQFKdlTx1sbKr7oR1FKqWOGo4HBGBMwxkwBcoAZwHGRTuvk2geNMYXGmMKMjIwjKvfz8gNhxxqaA6zdUXNE76OUUseiqMibGGNqgLeBWUCaiLSkuHKAsu4ub0h6+CqqCV4XBRn9ursopZTqcxwLDCKSISJpoZ8TgTOADcBbwEWh064GXujusm86czTx7fZjcLuEfglezpqU3d1FKaVUn+PkPIZs4AkRcWMFqGeMMS+LyHrgnyLyC2AV8Eh3Fzxr5CDuvWIaj7y1ld21DUwfPpBvzR1Jsi6gp5RSiDU4qG8rLCw0RUVFTldDKaX6FBFZYYwp7Hg8KvoYlFJKRY+YzZ0sXlPGQ29tYe/BZibmpnH7OccxbFCy09VSSinHxWSLYcmaMv73xc8o3ddAQ3OAT7bt5dqHPqK2vttX3lBKqT4nJgPDw29vpdHXtlGPMdDsD/Lap90+MlYppfqcmAwMew+Gtwya/EHKaxodqI1SSkWXmAwMU/PTEbEfS4xzM2PEQGcqpJRSUSQmA8Ot88bSP8FLQmiSW2Kcm+Pz05k9cpDDNVNKKefF5KiknAFJLLplDkvWllNW3cC04QOYNWIQLpcc/mKllDrGxWRgAEhJ9PKVGXlOV0MppaJOTKaSlFJKdS5mWww79tTx1IcllO5r4IRRg7iwMIfEuJj9OpRSqlVM3gnX76rlxsc+wecPEDCwZkc1L6/axWPXzSbOo40opVRsi8m74O9f30ijzwoKYM1hKKtp4K31u52tmFJKRYGYDAxbKiLv4PZZaa0DtVFKqegSk4Ehd0D4YnmJXjcjM1McqI1SSkUXJ3dwyxWRt0Rkg4h8JiK3hI7/TER2icjq0OOc7i775rPtO7h53UJqkpczJ2Z1d1FKKdXnONn57AduN8asFJEUYIWILA29dq8x5rc9VfC0goH86erpPLZsK2XVDcweNYirThquo5KUUgoHA4MxphwoD/18QEQ2AEN7q/wJuWnc87VpvVWcUkr1GVHRxyAi+cBUYHno0LdFZI2IPCoi6Y5VTCmlYpDjgUFE+gHPArcaY/YDDwAjgClYLYp7OrluoYgUiUhRVVVVr9VXKaWOdY4m1UXEixUUnjTGPAdgjKlo9/pDwMuRrjXGPAg8CFBYWGiOtOyXVpby8NtbqT7YzPicVL537jiGD+73RT6GUkodU5wclSTAI8AGY8zv2h3Pbnfal4B13V3265+Wcc+rG6iobaQ5EGT19moWPryc6jrd2lMppZxMJZ0IXAmc1mFo6t0islZE1gBzgdu6u+CwrT0BXyDIa6t1a0+llHJyVNJ7QKQNEF7t6bJrIrQMmvxBKg/o1p5KKeV457MTji9Ip+OePIle3dpTKaUgRgPDrfOOo3+il8Q4N2AFhZkjBzJrhG7tqZRSMTnVd0h6Is/eejJvrNtNxf5Gpg5LZ1rBAKz+cKWUim0xGRgAkuM9nD8tx+lqKKVU1InJVJJSSqnOaWBQSillE7OppHWlNTz+zjbKaxqYNXIQV80pIDUpzulqKaWU42IyMKwo3svtT65sneS2Y28db6zfzVM3nahLbyulYl5MppL+uGSTbeazL2CorfOxdK3u+ayUUjEZGHburQs71uALRNwLWimlYk2XA4OIZIjIiNCKqH3aiAh7OyfGuRmXk+pAbZRSKrocNqEuIguBOUADUAMMFZFa4DfGmOIerl+PuOXsMdz0eBE+f4CAgXivi+y0RE4bp3s+K6VUV3pai0J7H7QSkWRgSM9UqeeNz0njietn89QHJZTuq2f2qAy+PD2HOE9MZtaUUsrmsIHBGLMywrE6YHOP1KiXDBuUzJ3nj3e6GkopFXUO+yuyiJwhIg+JyJTQ84U9Xy2llFJO6Uoq6Sbg68CPRWQA1l7MSimljlFdSapXGWNqjDHfBc4CpndHwSKSKyJvicgGEflMRG4JHR8gIktFZHPo/+ndUV4kNXXNbKs8iM8fPPzJSikVI7rSYnil5QdjzJ0icnP7F0XkTOCrwJ+MMatFZGHHzupO+IHbjTErRSQFWCEiS4FrgDeMMXeJyJ3AncAdXfw8XeIPBPnFv9fx5voKPC5BRPjB+eM4Y0L24S9WSqljXFdaDIvbPzHG/BFARBJCh24EvgdcISKn0cVUkzGmvKVj2xhzANgADAUuAJ4InfYEcGFX3u9IPPrOVt7aUEGzP0h9c4C6Jj//8/w6duwJn/imlFKxpisthrtEJAisx5rHUBB6PAm8TyjVBHxXRO7iC6SaRCQfmAosBzKNMeVgBQ8RGdzJNQuBhQB5eXlHVN4LK0pp8tnTR4Gg4fU1ZSw8bdSRVl8ppY4pXRmuemsozz8ZGAi8boxZ2+6UQ6aaDkdE+gHPArcaY/Z3dRe1ULrqQYDCwkJzJGX6g+GnB43BHziit1FKqWNSl2Z0GWOqgUVAY4eggDHmhQ7P/9jVwkPLazwLPGmMeS50uEJEskOvZwOVXX2/rjp7YjZet/2je90uTp+gM5+VUupIpvr6gAdE5NqOL4jIU0dasFhNg0eADcaY37V76UXg6tDPVwMvdLz2aN1wxigm5qaS4HWRHO8hzuPihjNGMSa7f3cXpZRSfc6RbD5QDnwZeF1EcowxP2v32pgvUPaJwJXAWhFZHTr2Q+Au4BkR+SawA7j4C7z3ISXGefjz12dQXHmQyv2NjB3SXzfpUUqpkCPalcYYUyIiJwIviUgOsNAY84UmARhj3gM661A4/Yu855EqGNyPgsH9eqMopZTqM44klSQAxpi9wGnAYOBFEUmi8xu8UkqpPuZIAsOqlh+MMY1Y8wt2AW8DmpxXSqljRJcDgzHmGx2eB40x12ENVy3o7or1hsr9jXxWWkNjc8DpqiilVNQ4oj6GSIwxPxeRx7uhLr2m2R/kJ4s+5YPNe/C6XQSChu8tOI4FU4c6XTWllHJct+xMY4zZ3h3v01seenMLH2zeQ7M/SF2Tn0ZfgLtfWU9x5UGnq6aUUo6LyS3LXl69i+YOK6r6A0GWrC13qEZKKRU9YjIwYCIsfWEgGGGpDKWUijUxGRjmTxkStr+zx+3irEm67LZSSsVkYFh42igKCwYQ77GWxIj3uLht/lhGZKY4XTWllHLcUY9K6osSvG5+d8U0yqobqNzfyKisFJLjY/KrUEqpMDF9NxySnsiQ9ESnq6GUUlElJlNJSimlOqeBQSmllI0GBqWUUjYx28fw6updPPTWVqrrmpiQk8btC46jIEOX4FZKKcdaDCLyqIhUisi6dsd+JiK7RGR16HFOT5S9eE0Zd7+8nvKaBhp9QVYU7+NbDy2npq65J4pTSqk+xclU0uPAvAjH7zXGTAk9Xu2Jgh9+eyuNvrYlMQzgCwR57dOynihOKaX6FMcCgzFmGbDPibKrD4a3DJr8QXbXNjpQG6WUii7R2Pn8bRFZE0o1pXd2kogsFJEiESmqqqo6ogKm5qfj6rDnXGKcm5kjBn6hCiul1LEk2gLDA8AIYApQDtzT2YnGmAeNMYXGmMKMjIwjKuS2+WNJSfSS4LU+fqLXTWHBAGaNHPTFa66UUseIqBqVZIypaPlZRB4CXu6JcoakJ/HcLSezdF055TUNHJ8/gBkjBiKiW1crpVRUBQYRyTbGtGyK8CVg3aHOPxrJCR4uLMztqbdXSqk+y7HAICJPAacCg0SkFPgpcKqITMEaKFQCXOdU/ZRSKlY5FhiMMZdFOPxIr1dEKaWUTbR1PiullHJYVPUx9KZA0FBUvJeq/U1Myksjb2Cy01VSSqmoEJOBoaaumYWPLmfP/iaCxhA08JXpudwyb6zTVVNKKcfFZCrpD4s/p2xfA/XNARp9QZr9QZ4v2snq7dVOV00ppRwXk4Hh3c8r8QeN7ViTP8iyjZUO1UgppaJHTAaGpLjwDJrHJaQkxGRmTSmlbGIyMFw6e1jrchgt3C4X8ycPcahGSikVPWIyMFwyaxiXzhpGgteNxyVkpyVyz9eOJyst0emqKaWU42Iyd+JyCdefMZpr546koTlAvwSPrpOklFIhMRkYWnjcLlISY7LRpJRSndK7olJKKRsNDEoppWw0MCillLKJ2T6GytpGni/aSem+emaNGsRZE7LxejROKqVUTAaGLRUHWPjwcnyBIL6A4d3PK/l30U4e+PoMPG4NDkqp2ObYXVBEHhWRShFZ1+7YABFZKiKbQ/9P74my73ttI/XNAXwBa1mMRl+QLRUHdUkMpZTC2T6Gx4F5HY7dCbxhjBkFvBF63u02lO0PO9bQHNBF9JRSCgcDgzFmGbCvw+ELgCdCPz8BXNgTZWemJoQdS/C6GDZI92RQSqloS6hnGmPKAUL/H9zZiSKyUESKRKSoqqrqiAq56czRxLdbK8ktkBjnYd4kXStJKaWiLTB0mTHmQWNMoTGmMCMj44iuPXF0BndfNpWJualk9I/n7ElDeOL62STr6qpKKRV1o5IqRCTbGFMuItlAj/UGzxwxiJkjBvXU2yulVJ8VbS2GF4GrQz9fDbzgYF2UUiomOTlc9SngQ2CMiJSKyDeBu4AzRWQzcGbouVJKqV7kWCrJGHNZJy+d3qsVUUopZRNtqSSllFIOi7bOZ8d9sKmKF1eWIiJcMC2HWSO1g1opFVs0MLTz4Jub+ccH22n0BQD4cPMerppTwDdOGeFwzZRSsayxsZGSkhKKi4ttj507d/LBBx/gdru7tTwNDCG19c38/f0Smv3B1mONvgCPL9vGxTPySEn0Olg7pdSxzO/3U1paGnbjb3mUl5d3eu2uXbvIy8vr1vpoYAgprqrD63bZAgOA1+1i+946JuSkOVQzpVRfZ4yhoqKi0xv/zp078fv9nV7v8XjIy8ujoKAg7JGZmdnt9dXAEJIzIAlfIBh23BcIMjQ9yYEaKaX6ktra2k5v/MXFxTQ0NBzy+uzsbAoKChg+fHjYzX/o0KF4PL13u9bAEDIoJZ55k7JZsracRp8VIBK8Ls6ZMpT05Lijfv+y6jo27z7I9OEDSIrXtJRSfU1nef6WR3X1oVdnTk9Pj/gbf0FBAcOGDSMxMbGXPsnhaWBo587zxnPckFT+vaIUEfhSYQ7nTc05qvds8vm58HfLqK73tR5LSfCQFOdh+ogBXHvqSD7bVcvGXbXkD+7H6eOzSPC6afIFqK5rZlBKvG4epFQvOJo8P0BiYmKnN/6CggJSU1N76ZMcPTHGOF2Ho1ZYWGiKioqcrkZEX7v/PbZW1UV8zSUgInjdLhp9ARK9btKS45g3KZunPtwOGNwuF985ezQXTMtlVck+Xl1dhkuEc48fysTctn6PYNAQNEaDiFKdMMZQWVlpu9lv27aty3l+t9tNXl5exFRPQUEBgwcPRkR68RMdPRFZYYwp7HhcWww9rLOgABA0gDEEgtbw2AZfgObaRv727jYCrfE6yL2vbWR9aS2L15bT5AuCwOK1Zdx05mjOm5rDb1/dwOI1ZQSChuMLBvCTCycyOLTnRE1dMytL9tE/0cvU/AG4XX3rL65SR+JQef6SkhLq6+sPeX1Lnj/SIycnp1fz/E7SFkMPm/XTxUf9HhL6T8c/qniPi1kjB/Lhlr2to6lcAtlpifzrO3N4ZfUufvPKBjyhYNA/0ctfvjGDrDQrl1lcdZBXV5fhDwQ5Y0IW43XklYpysZTn7w3aYnBIepLX1r/wRRjALUKgQ2Rwu4T3N1XRfoRt0EB1XTPvbKjgN69soNkfpDn0WqMvwH8/v5Y/f30GS9eW84t/r8MfDBIMwvNFO/nGKSO4as5wAPyBIC+v2sWSteX0T/RyyaxhTM0fcFSfQ6nDCQQCYXn+9umeWMrzO0kDQw978NqZfPWP74X9tg8Q5xF8AWN7zeMSRMDXlksi3uPCHwx/A18giEsEK3S0EYGPt+2lY9YoaGD19mrqm/z8+qX1NNkm8wV5+O2tnHd8DunJcXz/qVWsLNnXOkLroy17uPO88cyb3LbL3Zvrd/P0h9tp8AWYP2kIF8/M0z4OdUiR8vztHzt27OhSnj/STX/48OF9Ms8fjTQw9LDcgcm8/5OzePitLXxevp+TRmewe38ju6obOGHUIIakJfLHJZvYWnmAoelJ3HD6KJ4r2smKkn14XII/YDh9QhYNTX4+2Lyn9Wae4HVx5oQsPinex+6aRluZvoBhdFYKi9eE/wNxu4Tymoaw1gdYk/k2lNWSnhRnCwpgBY57X9/IWROzcbmEv727jUff2da6fMj2PZspKt7HPV87vvWaJl+ARR/vYOm63fRP9PK1E/KZqWtPHfM0z9/36TfcC1wuYeHpozp9/ZGFs2zPTxo7mC0VB9i+p45RWSnkDUzGHwjyjw9KeHHlLlwCX56ey8Uzh7GhrJbvPFGEAYLGan18/9xxzB2Xyf1LN9neN85jBZOM/gkEAuGBIRAMkpWayLqdNRHrWd/k52CTn3iPyxYUAJp8QYqK97K14gAjMlMwxnDr/61g/a7a1mC2Zkc1t59zHOcd3zYE2BjDh5v38NKqXbhFuLAwh8LhAw/7nSrnNDY2sn379oipHs3zHxuiMjCISAlwAAgA/kidI8e6kZkpjMxMaX3ucbu4as7w1j6AFhNy0njp9lN5Z2MFjb4gJ43OaB2RdP/V0/nxvz6l6kATxsDJYwbzvQXjSIhzM29ydtsoJ6ygMW5oKsMH96O+yY8Q3tpIjPOQHO+hcn8jHdNXYKXBSvbUMSIzhTU7a9hYvj8sXXX/kk0smDIUVyjP9cB/NvPM8h2tQea9TZVcO3ckV5xYYHtvfyDIOxsr2VZxkBFZ/Th5zGBNW/WQSHn+9o+ysrJDXp+YmEh+fn6nN/+0NB3kEO2iMjCEzDXG7HG6En1BcoKHc6YMDTt+3NBUFt0yhz0HmkiK85Cc0PbH/f1zxzEkLZHnikrxB4KcPSmb606zWjXjc1IZn5PK2p01ttTVTWeOwu0SMlLicbtcgH0JEX/AMCrLCmbFlQeJNOLtYJOfBl+A5HgP+w428c+PtndYuDDIQ29u4cuFuSTFW/Wta/LzrYc/orymkYbmAIlxboamJ/LQtTNJjAv/K7x9Tx3lNQ2Mze5PWjfMWv/CDlbCu7+Ebf+BASPh5B/D0OnO1SekJ/P8LWv3aJ6/b4vmwKC6gYiQ0T8h7LjH7eKaU0ZwTYQlxUWE310xjec+2cHiteX0T/By+Yn5zBwxqPXam88azX2vf976m36i183ccZnkDUwGYGRWCkRodaQmekmKs5YI3lZ5kLgICxd63C527qtnTHZ/AJ75aDul+xpaz2toDrBzbz3/Wr7D1oJq9AW446lVrN5ejcftwhcI8s1TRnD1yfZWVnvGmJ65iTXuh79OhboqCPqgaoMVIK5YDMNOinxNQw3s2Qjpw6Hf4KMqfv/+/Z2mejTPrw4nWv90DbBERAzwV2PMg05XKNbEeVxcOjufS2fnR3z9wsJchg1KZtHHO6hvDjB/8hDOGJ/V+vr4oalMHZbOqu1WJ7YA8V4Xt80f23ojzhmQRHMnCxdmpbYFs2UbK8OCR5M/yHubqmyB4dG3t7JqezXN/mBrS+exZVuZVjCACbn29MX7m6q459UNlFU3kJmawK1nj2Fuu/oftU//Zt3ogy1DlQ346uE/d8I33ws/f9kvYdkvwB0P/kaYcg0s+DO4IqfLOub5Oz727dt3yOqlpaWFjejRPL9qEa2B4URjTJmIDAaWishGY8yy9ieIyEJgIdDta5GrrpmaP6DTuQ0iwm8un8rLq3axdN1uUpO8XDprGJPy0lvPyUpLZO64TN7ZUGFbuPD843NITYqzZvS9+79k7faxkRmYdjvRikBmh5bQa5+WRQwgi9eU2wLD+l21/OiZ1a1lVtQ28vPn15KWHBf2eYwxvLepildX78LjcnFhYS7TCrown2P3avBH+K18z+fhx7YsgXd/ZQUEvzXCLLD6b5SSR3HKCeE3/q1bKNtdccjiNc+vjkZUBgZjTFno/5Ui8jwwA1jW4ZwHgQfBmvnc65VUh+VxWzfSCwtzOz3nJ1+ayHNDU3lh5S7cLmu01fkto5Y+vh/e/SVXBHP4gCk00RYI4j0uvtahgzrR1cw83mAwVaxmImsYhyB43PZU0VMflNg6xcHq2/j7+8VhgeGPSzbx/Cc7aQilzO+t6wgAABmQSURBVN79vJLrTx/VaUtq78EmNu8+wOgB0xjg/Sf4OiyJkj0VsAJOVVWVler5x08pXldPcTUU11iPHbUN+IM/6vR7c7sgrz8UDHBRkJVKwbxbKBgxKnKe/8BucHshSUd7qa6JusAgIsmAyxhzIPTzWcB/O1wt1UPcLuHiWcO4eNaw8Bff/w346hkvm7jb/Jz7uI5ShpDXL8CtX5nD2CH9286t3cnjjVeAHCDONNNMHO8xk1+6fsiCqfaO+T2hUVod7TnQHHbeouU7bOmuRl+Qv7yxmQun5ZIQZ99O8S//2cQ/PtyO1+3C5c/lAf9ADu71U7K3ieIaF8X73RQnN1F89wSKi4sPm+fP6u+hYPx0e7pn0/0UNK4ipz94XABB8DbDggKYcrn9DfZuhmcuCrVSDOTNgYv+Cck6l0QdWtQFBiATeD70244H+Icx5nVnq6Qc0bS/9ceZsoqnuN56Mvn7MPxC+7mL/4tE3z6EAAh4aOQklvPbWXttw34B5o7LZEPpPhoDbS2JeDfMHWfv8N1ScQCvxxXWD+ISobS6npxUb2ue/82P1/LU0iLq95bRVFNBU81uRjUcaHdVMPRoa/jGJaWQkJZJZlYmpyZ+xuT+NRSkQ0Ea5GckkrjgHph+g/1z3vVdsM9ntFolpR/BlKvaFReAJ06D/btoHVq8fZkVKL7+NmH2l8HKh6F2O4w6B8ZeCK7u3UdY9R1RFxiMMduAyU7XQ0WBkfNg/bNg2g2d9CbD6AXh5277D2ICtkOJNDI9+DFwme34Bamf8Z/gJjaTjw8PXnzkBcq55LjRtvOGpsVzYG85B/eEbvbVu2ms2Y2vtoKT/1RNefmhx/OLJ45+A7OZM228Lb/vTxzE79/bS8Bj7QwoAltdfn4hCxnsqbP6GSZdDtOuA6wl1VeW7KOsuoGJ/WdT0PiqvSBvEgyeYD+2431orMU23yToswLIgd2Q0q6jvXw1PHYyBJoh0ATrnoZhc+DyVyJ3fgd80HQAEtOtyqtjTtQFBqVazbsXSj+EhurQ6B6ByVdaN62OEgdCo33GtngSoN+QsFPj3/s5fzGf8LGZwsr6IXirt5K8fyv33fkMxe7RtvH8Pl/kBRD3Y43nz83NpaCggFpXGlXB/sSlZRGflkl8ehbe5HRGZKbwj5tOtF37nSeKCHjatnk0Bprx8mzha9ww/oA1XDUlG4ADDT6uf/RjymsarJntwe8wX8ZwR/Be657s8kJCmvW9tOerj3zTFhf4O2wx+eq3obld68ZXBzveg21LYeTZbceNgXf+Bz74DfibITkDzn8YRs2L+B2pvksDg4peKdnwnS2w6RXYXwrDToasSZHPnfNDeO1m64bYwuVl//AvUfzpp/ZRPW+sobjKUFKzijrfqnZv8k7o0SZrQD9SkuLwpY0gJS2dU9NLuWDQNoZ/6afkzv9u63j+tTtruPmJTxjnW8Ut/Ik8Stkhuewe8auwqu7cF9634AsYimsCkGcPIn95YzM79tbZFlVc7DmbuVn1zPS9A8PPsCbOxVvpso+27OHPSzexrzrAIp+PsBksKUMgLd9+rCzCkvXNB61WR/vAsOIheP/Xbd/xgV3wzFfgulUwyN7aYs8mKzXVtB/GXwwFp2nrog/RwKCim9sLx13Y6cut4/krsinefz7Fy1+iuKqO4rpkive72PejzteoAkhLsHL6BQPcFBSeTcGMc1pTPvn5+SQ+PhsqPgU6zAuoeQs8d7Y+nZibxk9mNXPCez8hgSYAxrCF0SuugSmjIastOzqtIJ3XVjfQfrmqBDfMKGgbytvinQ2VtqAA0OCHt7JvZub5f7Ed/2TbXu7456rQMice7uBH3CW/ID7Oa63C646DS55rvUEbY1i/q5biuC8zun45o2Vb25t5+0G6fdQXH/7OHnjBSj+tfBjOurvt2KZX4V8XW68F/bDm73D8tTD/vrDPh7/ZCjD9ssCrcyeihQYGFdUCgQC7du065Lo9kTebsoaJJiQkkJ+fb9+OMSuNghU/oCCpjjRPPcT1gyGFcOW/rUDUXlKkETwCyeEzk0/b9wQG+8gm8TfC+3fDV55sPfatuSN5d2MljQ31NBFHAg1kB/dw7vp7oPBl8LQt45EU74aD9nI8LqF/Yod6Ag+9taV17SuA5RRygfyT20aUMX/acMif2/rezf4gt/19BetLayF4JYZLmGmK+CW/sjZ2iu8H479qL6B9uqlF0G9P4QWD8OK19gDiq4MVf4WZN8OAdjPtix6EJd8FEwQMnHSn1frRloXjNDAoR7Ufz9/Zuj2d5fnBnueP9MjKyoq85MXFl8Fnz8C+LZAzC0bNjzwK58TvWf0c7W903kSY+Z3wc2tKkI6LC5og1JTYDmWmJvLM5Ld5YfkWtppcjmctZ5s3SSj3wJr/g+O/2Xru5Sfkc9/rG21LoHuCTZyXWxtWfEVNx+FKsD+YwHtyAvNH2sdz/Gv5Dta1roXlAhJYznQWx1/IgjGJcOavIS659fytFQcoc89hJs8RR7s/D28yjLuo7Xl9FTREmHXt8sDOD9sCw/Z3YfFt9u/1vV/DwNEw4ZK2Y3VVVktl+zIYPMn68xjQ+RInqntoYFA9rv26PZHW56+r63xfbICsrKxOb/y5ublfbN2euCSYes3hzxt5Nix4AJZ+D+r3WDn6+X+MvBjeqAVQubZ19jIAngQYdW7Yqalbn+UqNtiXk/I1w4bnbIHhgmk5VK97nb8VZ+DDw0D28UN+T+7zW+DWEmtkUMi0ggEsXrOLE8xHzOcNGkjgFc95zB7VYcQS1p7hYZP8iGfx0B+w4Cv2xYxL99Vz7cPLcTd/lT/zCUMpR8SQ4AbXpCtgxJltJyekgctNhX8QWylgGDsZKrut19r3bXz8p/C0lK8OPvp9W2Co3wcPTLYCTaAJSj+GtU/Cwk9g0Ji264IBKHnbarnkz4Uk3WnwaGlgUEetqakp4ro9LYu3Hem6Pe0f+fn5zq/bM+Uqa9SPvwk88Z2nOmbfBuuesnLmzQetFFVqHsz8dvi5/TJhzwb7MXFD/xz7IRG+XnEnV1JDIwkkU28VH0yyWjyF17Wee/3pozj+sx9zemAJiTQSRDgj+B7uQDLwTdv7psR7AcMYtpBJFesYSzUDSEkMvyU8+X4xzf4AAZK5ij9xPGvIpoKUgjncep69/8e44/jtwPt5qXwQcTTTjJeTWc7PByzG3b5jvWNQiHS86AForLaCAljDln118NZP4OKnrWPVxfDYKW3prKAPznsIJl9hf19jrADi1lteV+i3pA7ri+f5LS15/s5u/unp4Z2uUUcEvOGr1Nok9IcbPrXmXlR8CllT4Liv2PoMWp30A9j1sf1G6ImHGTeHn9t0EI8E6Ue7cwPNYSmbwcFyFrAECc2Ac2GIN42w9HaYepWt/+TKGYO4cftVFJgSgrjw4uP/XJczY9a9YcWXVNURCBriaaaJOFYyGQyM3J8Sdu5b6yt4dU8uzQRoxvrc78kJ/HviVXylfUCdfCUUv2lfMsSTCJPbTdIr/cje+gIrNVe2ou35c1dYgdi0a/28tNBqxfTLtALCe3dZaaqm/ZA5CS54BIZMC6u7aqOBQfV4nj8zMxNXJ6uEHnM88dbkNC4/9Hkjz4LzH4Gl37eG4g4cDQv+BJnhaR+Gnw5bl0D7CXzuOGuGcnvlqxBPHAQ63EyDfquMdqOMZpXcQ8C1DXewrbP8GtczeFw3ADNtl1+c9AG/kP8mzdRSTSr3cR1vu+YyLcIoqpdX72pdV6pFY9DDS+v28ZX2I3HHXWR9pjV/tz5LwGcNvZ3ZLjAOmQFb/9Ph84gVcAGa663gauwpMcQNm1+zUoXL/2CtWtsSgCs+hcfnWsOg+w22WhGrHrUe7gSr/OO+FPMd4BoYYsSBAwci3vS3bdt21Hn+nJwcvN7wUTLqMCZeaj0O59y/wCOzrdnGwdAs8Jm32obAAjBwVNvrNsYaDtreZ8/YggKAJ9AIn/0LctoFhpJlzN3yI4R6EBhENT/mXprjs7hqzin299zxAdfv+i9uZzsrmMRDXEkVGYC1n7iNCJz/kDUSafenVp/B4PH2c6bfAJ/cDw0BK0Ukbqvjf25o6TSX25qw15FIW8d5aL0tm6DP6quYfRs8fzVsfL7tnLJPoOoOOOX/Wc/3fA5rn7K+1wmXRg7cxyANDMeIzvL8LY+9e/ce8vrU1NRD5vmTkpJ66ZOoMGl5cEsxbH4FDlZYk8U6TigDyJxoLZS3fVnb7GZvEpzw3fA5Au4I6S2X2zq/vQ/uQTosHx5PE7/MfRNvv1vaDpa8A0+ew2ifFUAyTRVzWM5XeRifN42vzgwtjW8MbHjeujHH9Yfp18O4L0f+3MmD4PpPrUl125fB4InWRMaWz+6Jh+Musjrs27cqXG5rIADY1ttq5W+yRjvt2wobnrWnq3x18O7/wuz/go0vWENvgz6r3h/+Ds7+nVVngPJV1uTAgWOs2fjHUCtDA0MfoXn+GOeJs1Ich3PZi/DhvfDpE9ZNftatMOlr4edNv9HaHMhvnyketrRGfVXYpQJ4Gzv8ovHGD22/mXskQCKNXChL8cz+LmdMCLVYXlpo/Qbuq7Peaf0zVouoY7kV66yhuyZo9TvMC+/7AOD8B63O6U0vWa2H/rlWx3RcKMCNONO6wbdPw3mTrDRc1QYrQHbsx3B5YO8WePl6+/Ih/gZY/F/W/I6Xr7cCNVjlZoyHq9+wWip7t0DFGsgYBxljI9c7ymlgiBLGGPbs2dPpyB7N86su8cTBnDusx6GcdIfV77D6MStF40mwOmUHdpgpPv4SKy9v6yRPCp/8tm9LWBEJNLFwQhPe00PvuXez1afQeiMO7Wr32i0w4bK2EUOrHodXbrQ62DHwyZ/hjF/bR3cZA1uXwpbXrXkoZ9xl3ZT7Zdl/c5//ByhdbrUcAs1Wa2LyldbSIzXbQ2V0YIJW4IrUAnB7rcC7+VX7d1LxqdXBXbvdGi3W0m8yaj5c9LQVVEretkaqDTs56leu1cDQizrL87c8Dpfnz8zMDLvht8zo1Ty/OiIuN5z7Z2siW10VpA2LfLOafj1sfM4aCWSC1jnZ02zDZAEYOsNa06r9BD9vMt7h7fohyldarZKO64b7G+HgbkjNAV+Dtahf+9/UffXWPJLJV0JCqhUUFl1utRJ8dVZQe+e/4Rvvti4+CFgBYfXj1iq9aQXWbO78U9v6ZtLzYeLXYF27DZW8yTD359ZChv6m8O8j4INdH4VvwORvbFsbqt1OfGx53fo8a/7PaokYA/H94Zq3rXN3vm8NaR51TvisewdpYOhGmudXfU58SusCfBF54q2b2PZ3rcl7mZMg76Tw36bPvDvUt9Fo/RbuTbJGQU1ot+T5wNH2lE4LcVkrtYKV3okUoNxx1nap+adYi/u1BAUI3YQbrfTOtR9ax5bfD/+5wwo00NZp3RIUmuvho/usgJc+wrpp9x8C029qWy129AJr3aeW/gt3vNXSSB1m1bnjaChffXjA8NXDigexBczmg/DQTOt9TdAKlokDYc4PYP0iqy6F11vl1+6wXkvoT2/SwHAEAoEAZWVlYWkezfOrY5oI5J9sPTqTcRzc+Jm1Hevez2H4mTDlGvvcj+ypkDMbdn5g7xyf8wMrAIE1s9wfIb0T8Fn9B9AWgDpqWSW26YA1DLhjq+PNH8PUb1q/sT9+KlSus9fjxO9aQaF+H7zwdStdZILgirPSVJOvglN/bk286xgYvElWK2N3+9V6W79AbIEBA43t56A0WutQvXJjW+AsfjN0qcsaUpsxNhRAs0M78LmsIJR7Isy8qdtbG1EZGERkHvB7wA08bIy5qzfK7SzP3/LYvn37IfP8LpeLvLy8iKkezfOrY15qDpx5mH+qX3sFPrjH6muI62cNGZ3QbshuShaMvQA+f7Htpu1JgIK5bWskpeZaLYDmDqsLtix4WLXBulF23HfCHd+2ZMmeDeGBY/HtMPEy+McCqyXRMvRXjNXaOeMuePQkawhr0E/rDT++P+SdbM3LCOPC2rmvC9q3pgId0lgVa0I/rLYf37AIltwGF/8Lxl9Ed4m6wCAibuBPwJlAKfCJiLxojFnf3WU99dRTfPTRR0ed52+/bo/m+ZU6BE88nPxD69GZL/0N3v0VrHwoNCrpajj1Z22vH/cVWPI9K03UcjP1JsEpP7F+Ts2L3KkcaLLWa9rwnNUC6ejgbqjcYM2rCLZ7PeizAsr7d1sBpbXT2YB4rOHDW5dAsGOZYqXFgl0MDEfjX1+FMQ1tLa+jFHWBAZgBbAlt8YmI/BO4AOj2wPD000/zwgsv2I5pnl8ph3niYO7PrEckcUnWQnqv3wbb/mO1FOb8EI7/hvV6ShaMu9hamqRlOK4nEcacZ7U2MidbLYqOv5Wn5lopHVeE26LLY5XVcbKc8YeW9mgIv0Zc9gDTo4w1DLgrC0N2QTQGhqHAznbPS+k4Rx8QkYXAQoC8vLwvVNCVV17JSSedpHl+pfqa1Fy4ZFHnr1/wqDUhbsVfAWP1LZz4Peu1/FOs/Tda16oSKzU1/w/WchsRh5KKNRqr9KPwm31CmtWZbTrMOheh4yrsPaobJ9jJoTpLnSAiFwNnG2OuDT2/EphhjImwupilsLDQFBVF2J5QKaUi8TfDqkesUUDJWTD71ral1Lcshqe/DEjo5h6Erz4Lg8bCAxPtfRveJGtZ9o6T4bxJVr/D9mX2SYTuUKqnfWtFXNYw1qOJIuKCHzVEXrDxUJeJrDDGFHY8Ho0thlIgt93zHKDMoboopY5FnjhrLabpN4S/NvJsuG0HfP4SYGDM+ZA00Hrt68us2c/lK625EWf+2jrfm2jN6g76rf6LSVfAvN9bS2qsX2Tl/gM+OO0XVgBZ9gsrSASaYPR5Vh9G7U7rBu9yWzEi6LP6SkzwMGkpsQLXEQaFQ4nGFoMH2AScDuwCPgEuN8Z81tk12mJQSjku4IPqbZCcCYlpbcf3l1kzojPGt81HaKiGqvXWENeUbKvFUPmZFTSyj7fOKV9p9Y1kjLNGJZmgtaVsdbGVAit509rVbuKlX3gmdWcthqgLDAAicg5wH9Zw1UeNMb881PkaGJRS6sj1pVQSxphXgVedrodSSsUinW2llFLKRgODUkopGw0MSimlbDQwKKWUsonKUUlHSkSqgO1f8PJBwJ5urM6xSr+nrtHvqWv0e+q6nvyuhhljMjoePCYCw9EQkaJIw7WUnX5PXaPfU9fo99R1TnxXmkpSSillo4FBKaWUjQYGeNDpCvQR+j11jX5PXaPfU9f1+ncV830MSiml7LTFoJRSykYDg1JKKZuYDgwiMk9EPheRLSJyp9P1iUYikisib4nIBhH5TERucbpO0UxE3CKySkRedrou0UpE0kRkkYhsDP29mu10naKRiNwW+je3TkSeEpGE3io7ZgODiLiBPwHzgXHAZSIyztlaRSU/cLsx5jhgFnCTfk+HdAuwwelKRLnfA68bY8YCk9HvK4yIDAW+AxQaYyZgbUFwaW+VH7OBAZgBbDHGbDPGNAP/BC5wuE5RxxhTboxZGfr5ANY/4qHO1io6iUgOsAB42Om6RCsR6Q+cDDwCYIxpNsbUOFurqOUBEkOblyXRiztZxnJgGArsbPe8FL3hHZKI5ANTgeXO1iRq3Qd8Hwg6XZEoNhyoAh4LpdweFpFkpysVbYwxu4DfAjuAcqDWGLOkt8qP5cAgEY7p2N1OiEg/4FngVmPMfqfrE21E5Fyg0hizwum6RDkPcDzwgDFmKlAHaP9eByKSjpXBKACGAMkickVvlR/LgaEUyG33PIdebKr1JSLixQoKTxpjnnO6PlHqROB8ESnBSkueJiJ/d7ZKUakUKDXGtLQ6F2EFCmV3BlBsjKkyxviA54ATeqvwWA4MnwCjRKRAROKwOnZedLhOUUdEBCsfvMEY8zun6xOtjDE/MMbkGGPysf4uvWmM6bXf8PoKY8xuYKeIjAkdOh1Y72CVotUOYJaIJIX+DZ5OL3bSR+Wez73BGOMXkW8Di7F6/B81xnzmcLWi0YnAlcBaEVkdOvbD0L7cSn0RNwNPhn4h2wZ83eH6RB1jzHIRWQSsxBoZuIpeXBpDl8RQSillE8upJKWUUhFoYFBKKWWjgUEppZSNBgallFI2GhiUUkrZaGBQSillo4FBqR4kIr8PTVK6UEQeEpEXROSs0GvTROQ6p+uoVEcaGJTqISIyADDGmHpjzL+NMd8CrgEuwXphBTDHwSoqFVHMznxWqruIyGNYq862yALigIsIX+7hx1j7gLRoFJFMY0xFz9ZSqa7TwKDUUTLGtC7pICIFwLvAQmAAUBM6LsBdwGst+1uEVAP9AQ0MKmpoKkmpbiIiA4HXgf8xxrwIbALyQy/fjLVi5kUicn27y4ZiLZimVNTQFoNS3UBEEoGXgWeMMX8NHV4L3AhgjPkD8IcO1/QD9htjmnqzrkodji6ip9RRCu0f/jywt31aKfTaHGCFMaY+wnWjgYAxZmvv1FSprtHAoNRREpG/AnnAecYYv9P1UepoaR+DUkdBRH4KTAMu7hgURGS4iDwSWldfqT5DWwxKfUEikg8UAyVAbbuXPjfGXNLuvEXGmIt6tXJKHQXtfFbqCzLGlADidD2U6m6aSlJKKWWjgUGpHiIiA0XkL8BUEfmB0/VRqqu0j0EppZSNthiUUkrZaGBQSillo4FBKaWUjQYGpZRSNhoYlFJK2WhgUEopZaOBQSmllI0GBqWUUjYaGJRSStn8f91gZCaSoesxAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W3 = W3.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b3 + W3[0]*z1_min) / W3[1]\n",
    "z2 = -(b3 + W3[0]*z1_max) / W3[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(2)}_1$')\n",
    "plt.ylabel(r'$Z^{(2)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h2_many, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Questions/Exercises"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) Did we need more than one hidden layer to perfectly classify? If not, why might multiple hidden layers be useful for other datasets?\n",
    "\n",
    "2) Why not use a very large number of neurons since it's clear that the classification accuracy improves with more degrees of freedom?\n",
    "\n",
    "3) Repeat the plotting of the hyperplane, in Part 1b, only without the ReLU function (i.e. max(x, 0) function). Why is an activation function needed?"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
